2026-05-13 03:08:36
Scikit-learn是Python中一个功能强大的机器学习库,它提供了丰富的算法和工具,用于数据预处理、模型训练、评估和优化。以下是对Scikit-learn基础的详细介绍:
一、数据加载与预处理数据加载:
Scikit-learn内置了一些经典数据集,如鸢尾花数据集(datasets.load_iris())。
也可以使用NumPy等库生成或加载自定义数据。
数据预处理:
标准化:使用StandardScaler将数据转换为均值为0,方差为1的分布。
归一化:使用Normalizer将数据缩放到单位范数。
二值化:使用Binarizer将数据根据阈值转换为0或1。
类别特征编码:使用LabelEncoder将类别标签转换为数值。
插补缺失值:使用Imputer(在新版本中已被SimpleImputer替代)处理缺失值。
生成多项式特征:使用PolynomialFeatures生成多项式和交互特征。
有监督学习估计量:
线性回归:LinearRegression用于回归问题。
支持向量机(SVM):SVC用于分类问题。
朴素贝叶斯:GaussianNB用于分类问题。
K近邻(KNN):KNeighborsClassifier用于分类问题。
无监督学习估计量:
主成分分析(PCA):PCA用于降维。
K均值聚类:KMeans用于聚类问题。
模型拟合:
使用fit方法将模型与数据相吻合。对于无监督学习,可能还需要使用fit_transform方法同时拟合和转换数据。
预测:
使用predict方法进行标签预测。
对于某些模型(如KNN),还可以使用predict_proba方法获取标签的估计概率。
评估模型性能:
分类指标:包括准确得分(accuracy_score)、分类报告(classification_report)和混淆矩阵(confusion_matrix)。
回归指标:包括平均绝对误差(mean_absolute_error)、均方误差(mean_squared_error)和R2分数(r2_score)。
聚类指标:包括调整rand系数(adjusted_rand_score)、同质性分数(homogeneity_score)和V测度(v_measure_score)。
交叉验证:
使用cross_val_score进行交叉验证,评估模型的泛化能力。
模型优化:
网格搜索:使用GridSearchCV在指定的参数范围内进行穷举搜索,找到最佳参数组合。
随机参数优化:使用RandomizedSearchCV在参数空间内随机采样,寻找较优的参数组合。
以下是一个使用Scikit-learn进行KNN分类的完整示例代码:
from sklearn import neighbors, datasets, preprocessingfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score# 加载数据iris = datasets.load_iris()X, y = iris.data[:, :2], iris.target# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33)# 数据标准化scaler = preprocessing.StandardScaler().fit(X_train)X_train = scaler.transform(X_train)X_test = scaler.transform(X_test)# 创建KNN分类器knn = neighbors.KNeighborsClassifier(n_neighbors=5)# 拟合模型knn.fit(X_train, y_train)# 预测测试集y_pred = knn.predict(X_test)# 评估模型性能print(accuracy_score(y_test, y_pred))这段代码展示了如何从加载数据开始,经过数据预处理、模型创建与拟合、预测到最终评估模型性能的完整流程。