Python进阶教程:机器学习入门(Scikit-learn) 📅 发布时间:2026/8/25 12:49:07 👁 浏览次数: 目录Python进阶教程机器学习入门Scikit-learn一、机器学习是什么二、机器学习基本流程三、第一个分类模型四、线性回归五、模型评估与交叉验证六、K-Means 聚类七、特征工程要点八、实战预测鲜花品种总结Python进阶教程机器学习入门Scikit-learn本文是Python 入门教程系列的第 17 篇扩展篇。前面第 8 篇介绍了数据分析本篇进入机器学习入门使用最流行的 Scikit-learn 库。一、机器学习是什么机器学习让计算机从数据中自动学习规律并做出预测主要分三类监督学习有标注数据分类、回归无监督学习无标注数据聚类、降维强化学习通过奖励学习策略安装pip install scikit-learn matplotlib二、机器学习基本流程准备数据特征 标签划分训练集和测试集训练模型评估模型预测新数据三、第一个分类模型fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportaccuracy_score# 1. 加载鸢尾花数据集irisload_iris()X,yiris.data,iris.target# 2. 划分训练集/测试集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42)# 3. 训练模型modelDecisionTreeClassifier(max_depth3)model.fit(X_train,y_train)# 4. 评估y_predmodel.predict(X_test)print(f准确率{accuracy_score(y_test,y_pred):.2f})# 5. 预测新样本new_sample[[5.1,3.5,1.4,0.2]]print(f预测类别{iris.target_names[model.predict(new_sample)[0]]})四、线性回归fromsklearn.linear_modelimportLinearRegressionfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportmean_squared_errorimportnumpyasnp# 模拟数据房价与面积np.random.seed(42)Xnp.random.rand(200,1)*100# 面积 0-100y3*X[:,0]10np.random.randn(200)*5# 房价X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2)modelLinearRegression()model.fit(X_train,y_train)print(f斜率{model.coef_[0]:.2f}截距{model.intercept_:.2f})y_predmodel.predict(X_test)print(f均方误差{mean_squared_error(y_test,y_pred):.2f})五、模型评估与交叉验证fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimportcross_val_scorefromsklearn.svmimportSVC irisload_iris()modelSVC(kernellinear,C1.0)# 5 折交叉验证scorescross_val_score(model,iris.data,iris.target,cv5)print(f每折准确率{scores})print(f平均准确率{scores.mean():.3f})六、K-Means 聚类fromsklearn.clusterimportKMeansfromsklearn.datasetsimportmake_blobsimportmatplotlib.pyplotasplt# 生成聚类数据X,_make_blobs(n_samples300,centers4,random_state42)# K-Means 聚类kmeansKMeans(n_clusters4,random_state42)kmeans.fit(X)# 查看聚类中心print(f聚类中心{kmeans.cluster_centers_})print(f样本所属簇{kmeans.labels_[:10]})# 可视化可选# plt.scatter(X[:, 0], X[:, 1], ckmeans.labels_)# plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker*, s200, cred)# plt.show()七、特征工程要点好的特征比复杂模型更重要fromsklearn.preprocessingimportStandardScaler,OneHotEncoderimportnumpyasnp# 特征缩放对距离敏感的算法很重要Xnp.array([[1,1000],[2,2000],[3,3000]])scalerStandardScaler()X_scaledscaler.fit_transform(X)print(X_scaled)# 类别特征独热编码fromsklearn.preprocessingimportLabelEncoder colors[红,绿,蓝,绿,红]encoderLabelEncoder()print(encoder.fit_transform(colors))# [0 1 2 1 0]八、实战预测鲜花品种fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportclassification_report# 数据准备irisload_iris()X_train,X_test,y_train,y_testtrain_test_split(iris.data,iris.target,test_size0.3,random_state42)# 随机森林比单棵树更稳modelRandomForestClassifier(n_estimators100,random_state42)model.fit(X_train,y_train)# 评估y_predmodel.predict(X_test)print(classification_report(y_test,y_pred,target_namesiris.target_names))# 特征重要性forname,impinzip(iris.feature_names,model.feature_importances_):print(f{name}:{imp:.3f})总结本篇介绍了机器学习的基本流程、分类/回归/聚类三大经典任务、交叉验证和特征工程并用鸢尾花数据集跑通了完整实战。机器学习重在实践建议用 UCI 或 Kaggle 的数据集多做练习。