下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章机器学习【例5-2】KNN举例importmatplotlib.pyplotaspltplt.plot([9,9.2,9.5,9.2,5.7,7,7.5],[9.0,9.2,9.2,9.2,7.1,7.4,7.5],'yx')#橙子plt.plot([7.2,7.3,7.2,7.3,7.2,7.3,7.3],[10.3,10.5,9.2,10.2,9.7,10.1,10.1],'b.')#柠檬plt.plot([7],[9],'r^')#未知物体circle1=plt.Circle((7,9),1.2,color='g')plt.gcf().gca().add_artist(circle1)#绘制未知物体周边范围plt.axis([5,11,5,11])#图表尺寸plt.ylabel('Hcm')plt.xlabel('Wcm')plt.legend(('Orange','Lemons'),loc='upperright')plt.show()【例5-3】K值选择举例【例5-4】KNN算法进行鸢尾花识别fromsklearnimportdatasets#引入数据集fromsklearn.model_selectionimporttrain_test_split#将数据分为测试集和训练集fromsklearn.preprocessingimportStandardScalerfromsklearn.neighborsimportKNeighborsClassifier#利用邻近点方式训练数据#步骤1:通过datasets加载鸢尾花数据iris=datasets.load_iris()#鸢尾花数据iris包含4个特征变量#步骤2:划分数据集x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=5)#步骤3:特征工程:标准化transfer=StandardScaler()x_train=transfer.fit_transform(x_train)#训练集标准化x_test=transfer.transform(x_test)#测试集标准化#步骤4:KNN算法预估器estimator=KNeighborsClassifier(n_neighbors=3)estimator.fit(x_train,y_train)#步骤5:模型评估采用如下两种方法#方法1:直接比对真实值和预测值y_predict=estimator.predict(x_test)print(y_predict)print('比对真实值和预测值\n',y_test==y_predict)#方法2:计算准确率score=estimator.score(x_test,y_test)#测试集的特征值和目标值print("准确率:",score)【例5-6】决策树应用于回归问题举例#boston_tree_final.pyimportos,joblibimportnumpyasnpfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.treeimportDecisionTreeRegressorfromsklearn.metricsimportr2_score,mean_squared_error,mean_absolute_errorfromsklearn.datasetsimportfetch_openml#----------1.数据获取(带清华镜像加速+本地缓存)----------data_home=os.path.join(os.path.expanduser("~"),"scikit_learn_data")#国内镜像站,速度快boston=fetch_openml(name="boston",version=1,data_home=data_home,as_frame=False,parser="auto")X,y=boston.data,boston.target#X:506×13y:506#----------2.数据集拆分----------X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)#----------3.仅对特征标准化----------scaler_X=StandardScaler()X_train=scaler_X.fit_transform(X_train)X_test=scaler_X.transform(X_test)#目标值不做标准化(房价单位保持k$)#----------4.训练----------reg=DecisionTreeRegressor(random_state=33)reg.fit(X_train,y_train)y_pred=reg.predict(X_test)#----------5.评估----------print("回归树R²:",r2_score(y_test,y_pred))print("回归树MSE:",mean_squared_error(y_test,y_pred))print("回归树MAE:",mean_absolute_error(y_test,y_pred))【例5-8】MultinomialNB应用于20newsgroups数据集#news_offline_final.pyfromsklearn.datasetsimportfetch_20newsgroupsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.feature_extraction.textimportCountVectorizerfromsklearn.naive_bayesimportMultinomialNBfromsklearn.metricsimportclassification_report#强制本地读取news=fetch_20newsgroups(data_home=None,#默认即~/scikit_learn_datasubset='all',remove=('headers','footers','quotes'),download_if_missing=False#关键:不尝试联网)print('输出数据的条数:',len(news.data))#拆分/向量化/训练/评估X_train,X_test,y_train,y_test=train_test_split(news.data,news.target,test_size=0.25,random_state=33)vec=CountVectorizer(stop_words='english',max_df=0.5)X_train=vec.fit_transform(X_train)X_test=vec.transform(X_test)mnb=MultinomialNB(alpha=0.1)mnb.fit(X_train,y_train)y_pred=mnb.predict(X_test)print('准确率:{:.4f}'.format(mnb.score(X_test,y_test)))print(classification_report(y_test,y_pred,target_names=news.target_names))【例5-11】轮廓系数举例#生成数据模块fromsklearn.datasetsimportmake_blobs#k-means模块fromsklearn.clusterimportKMeans#评估指标——轮廓系数,前者为所有点的平均轮廓系数,后者返回每个点的轮廓系数fromsklearn.metricsimportsilhouette_score,silhouette_samplesimportnumpyasnpimportmatplotlib.pyplotasplt#生成数据x_true,y_true=make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)#绘制出所生成的数据plt.figure(figsize=(5,5))plt.scatter(x_true[:,0],x_true[:,1],c=y_true,s=10)plt.title("Origindata")plt.show()#根据不同的n_centers进行聚类n_clusters=[xforxinrange(3,5)]foriinrange(len(n_clusters)):#实例化k-means分类器clf=KMeans(n_clusters=n_clusters[i])y_predict=clf.fit_predict(x_true)#绘制分类结果plt.figure(figsize=(5,5))plt.scatter(x_true[:,0],x_true[:,1],c=y_predict,s=10)plt.title("n_clusters={}".format(n_clusters[i]))ex=0.5step=0.01xx,yy=np.meshgrid(np.arange(x_true[:,0].min()-ex,x_true[:,0].max()+ex,step),np.arange(x_true[:,1].min()-ex,x_true[:,1].max()+ex,step))zz=clf.predict(np.c_[xx.ravel(),yy.ravel()])zz.shape=xx.shapeplt.contourf(xx,yy,zz,alpha=0.1)plt.show()#打印平均轮廓系数s=silhouette_score(x_true,y_predict)print("Whencluster={}\nThesilhouette_score={}".format(n_clusters[i],s))#利用silhouette_samples计算轮廓系数为正的点的个数n_s_bigger_than_zero=(silhouette_samples(x_true,y_predict)>0).sum()print("{}/{}\n".format(n_s_bigger_than_zero,x_true.shape[0]))【例5-12】用调整兰德指数(ARI)和标准化互信息(NMI)看聚类质量#kmeans_digits_fix.pyimportos,ssl,matplotlibmatplotlib.use('TkAgg')#1.强制后端ssl._create_default_https_context=ssl._create_unverified_contextfromsklearn.datasetsimportload_digitsfromsklearn.clusterimportKMeansfromsklearn.metricsimportadjusted_rand_score,normalized_mutual_info_scoreimportmatplotlib.pyplotaspl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年烟台市莱山区事业编单位人员招聘笔试参考题库及答案详解
- 2026年株洲市石峰区社区工作者招聘笔试参考题库及答案详解
- 2026年四平市铁西区社区工作者招聘考试模拟试题及答案详解
- 开普敦渔业资源开发评估及可持续养殖和经济效益考察
- 2026年攀枝花市仁和区网格员招聘笔试备考试题及答案详解
- CN114374279B 一种无线充电方法、装置和电子设备 (维沃移动通信有限公司)
- 初中七年级地理《区域认知与图像解码》单元整体教学设计(商务星球版2025)
- 小学四年级语文上学期期中综合素养表现性评价教案
- 2026年沈阳市于洪区社区工作者招聘考试参考题库及答案详解
- 2026年台州市椒江区社区工作者招聘考试模拟试题及答案详解
- 江苏无锡市2025-2026学年高二下学期期末考试数学试题
- 2026年教师招聘面试试讲真题(高中生物)
- 创意与策划课程大纲
- 深度解析(2026)《TBT 3211-2009机车车辆用铸钢件射线照相检验参考图谱》
- 内蒙古西蒙集团招聘笔试题库2026
- 医院检验科施工方案
- 浙江宁波宁麓置地(宁波)有限公司招聘笔试题库2026
- 厂用电中断应急预案演练
- 安全生产事故情况说明
- GB/T 20424-2025重有色金属精矿产品中有害元素的限量规范
- 2024专利代理人考试真题及答案
评论
0/150
提交评论