机器学习是数据科学的一个核心领域,涉及多种算法和方法。本文旨在提供十种常用机器学习算法的代码示例,使用Python的Scikit-Learn库,并展示简单的数据集,使代码可直接运行并跑出可视化结果。
1. 线性回归 (Linear Regression)
线性回归是一种预测连续值的算法,非常适合用于回归问题。
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import numpy as np
#创建数据
X = np.array([[1], [2], [3], [4]])
y = np.array([2, 3, 2.5, 5])
#创建并训练模型
model = LinearRegression()
model.fit(X, y)
#预测
predictions = model.predict(X)
#可视化
plt.scatter(X, y, color=‘blue’)
plt.plot(X, predictions, color=‘red’)
plt.title(‘Linear Regression’)
plt.xlabel(‘X’)
plt.ylabel(‘y’)
plt.show()
2. 逻辑回归 (Logistic Regression)
逻辑回归通常用于分类问题,尤其是二分类问题。
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载Iris数据集
X, y = load_iris(return_X_y=True)
y = y[:100] # 只选取前两类花
X = X[:100, :2]
#创建并训练模型
model = LogisticRegression()
model.fit(X, y)
#预测
predictions = model.predict(X)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Logistic Regression’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
3.决策树 (Decision Tree)
决策树是一种常用于分类和回归的算法,易于理解和解释。
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = DecisionTreeClassifier()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Decision Tree’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
4. 随机森林 (Random Forest)
随机森林是一种集成学习算法,通常用于分类和回归任务。
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载Iris数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = RandomForestClassifier()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Random Forest’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
5. K-最近邻 (K-Nearest Neighbors, KNN)
KNN是一种简单的机器学习算法,通常用于分类。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = KNeighborsClassifier()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘K-Nearest Neighbors’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
6. 支持向量机 (Support Vector Machine, SVM)
支持向量机是一种强大的分类算法,适用于复杂数据集。
from sklearn.svm import SVC
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = SVC()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Support Vector Machine’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
7. 朴素贝叶斯 (Naive Bayes)
朴素贝叶斯是一种基于贝叶斯定理的简单概率分类器,常用于文本分类。
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = GaussianNB()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Naive Bayes’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
8. K-均值聚类 (K-Means Clustering)
K-均值是一种流行的聚类算法,用于将数据分组成多个簇。
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
#创建一些简单的数据
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
#创建并训练模型
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.title(‘K-Means Clustering’)
plt.xlabel(‘X’)
plt.ylabel(‘y’)
plt.show()
9. 主成分分析 (Principal Component Analysis, PCA)
PCA是一种用于降维的技术,可以提取数据中最重要的特征。
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
#创建一些简单的数据
X = np.random.rand(50, 3)
#创建并应用PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
#可视化
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.title(‘Principal Component Analysis’)
plt.xlabel(‘Component 1’)
plt.ylabel(‘Component 2’)
plt.show()
10. 梯度提升机 (Gradient Boosting Machine, GBM)
梯度提升机是一种用于回归和分类的强大的集成学习方法。
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
#加载数据集
X, y = load_iris(return_X_y=True)
X = X[:, :2] # 为了可视化,仅使用前两个特征
#创建并训练模型
model = GradientBoostingClassifier()
model.fit(X, y)
#可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title(‘Gradient Boosting Machine’)
plt.xlabel(‘Feature 1’)
plt.ylabel(‘Feature 2’)
plt.show()
以上是十种常见的机器学习算法的简介、代码示例和可视化。这些示例提供了每种算法的基本应用,帮助理解它们在实际问题中的运用。