Scikit-learn 机器学习算法实践
继上一篇Python 快速入门:基础语法与数据处理实战, 我们接下来介绍人工智能常用的机器学习库。在数据分析和预测建模领域,Scikit-learn 是一个功能强大且易于使用的 Python 机器学习库。本文将通过几个示例,介绍如何使用 Scikit-learn 进行监督学习(分类和回归)以及无监督学习(聚类和降维)。
1. 监督学习 - 分类
1.1 K-近邻算法进行鸢尾花分类
代码
# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建 K-近邻分类器模型
knn = KNeighborsClassifier(n_neighbors=3)
# 使用训练集训练模型
knn.fit(X_train, y_train)
# 使用测试集进行预测
y_pred = knn.predict(X_test)
# 计算预测的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率为:{accuracy * 100:.2f}%")
流程图
1.2 支持向量机进行乳腺癌分类
代码
# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 加载乳腺癌数据集
cancer = datasets.load_breast_cancer()
X = cancer.data # 特征数据
y = cancer.target # 标签数据
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建支持向量机分类器模型
svm = SVC(kernel='linear')
# 使用训练集训练模型
svm.fit(X_train, y_train)
# 使用测试集进行预测
y_pred = svm.predict(X_test)
# 计算预测的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率为:{accuracy * 100:.2f}%")
流程图
2. 监督学习 - 回归
2.1 线性回归预测加州房价
代码
# 导入所需的库
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 加载加州房价数据集
housing = fetch_california_housing()
X = housing.data # 特征数据
y = housing.target # 标签数据
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建线性回归模型
lr = LinearRegression()
# 使用训练集训练模型
lr.fit(X_train, y_train)
# 使用测试集进行预测
y_pred = lr.predict(X_test)
# 计算预测的均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"模型的均方误差为:{mse:.2f}")
流程图
3. 无监督学习 - 聚类
3.1 K-均值聚类分析鸢尾花数据
代码
# 导入所需的库
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征数据
# 创建 K-均值聚类模型
kmeans = KMeans(n_clusters=3)
# 使用数据训练模型
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('花萼长度')
plt.ylabel('花萼宽度')
plt.title('K-均值聚类结果')
plt.show()
流程图
4. 无监督学习 - 降维
4.1 主成分分析降维
代码
# 导入所需的库
from sklearn import datasets
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征数据
# 创建主成分分析模型
pca = PCA(n_components=2)
# 使用数据训练模型并降维
X_pca = pca.fit_transform(X)
# 可视化降维后的结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=iris.target, cmap='viridis')
plt.xlabel('主成分 1')
plt.ylabel('主成分 2')
plt.title('主成分分析降维结果')
plt.show()
流程图
通过以上示例,我们可以看到 Scikit-learn 提供了简单而强大的工具,用于处理各种机器学习任务。无论是监督学习还是无监督学习,都可以通过几行代码快速实现。希望这些示例能够帮助你更好地理解和应用机器学习算法。