版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目1:基于sklearn的数据分类挖掘一、项目任务熟悉sklearn数据挖掘的基本功能。进行用朴素贝叶斯、KNN、决策树C4.5、SVM算法进行数据分类分析。二、项目环境及条件sklearn-0.18.0python-2.7.13numpy-1.11.3+mkl-cp27-cp27m-win_amd64scipy-0.19.0-cp27-cp27m-win_amd64matplotlib-1.5.3-cp27-cp27m-win_amd64三、实验数据Iris数据集Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理Iris也称鸢尾花卉 数据集,是一类多重变量分析的数据集
2、。数据集包含150个数据集,分为3类,每类50个数 据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预 测鸢尾花卉属于(Setosa,Versicolour, Virginica)三个种类中的哪一类。Digits数据集美国著名数据集NIST的子集,模式识别常用实验数据集,图像属于灰度图像。分辨率为 8x8四、项目内容及过程读取数据集从sklearn中读取iris和digits数据集并测试打印from sklearn import datasets iris = datasets.load_iris()digits = datasets.load_digits()p
3、rint iris:,iris.data,ndigits:,digits.data打印的数据集存在numpy.ndarray中,ndarray会自动省略较长矩阵的中间部分。Iris数据集的样本数据为其花瓣的各项属性Digits数据集的样本数据为手写数字图像的像素值6.83.25.92.3! 6.73.35.72.5| 6.73.5.22.31 6.32.55.1.9i 6.53.5.22.I e.23.45.42.31 5.93.5.11.8digits:0.9.5. J0.9.0J0-0.0. 】10.0.0-土0.0. 】16.9.0-. . . 160.1. , S-0.0-土0.2.
4、, 12-0.0-饥EB.0.t10. ,12.1.0-划分数据集引入sklearn的model_selection使用train_test_split划分digits数据集,训练集和测试集比例为8:2from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(digits.data,digits.target,test_si ze=0.2)printx_train:,x_train,nx_test:,x_test,ny_train:,y_train,ny_
5、test:,y_test如 y_train: y test:7 & 7 7 6 94 114 4805024169 4 0 4 7 359601227672S19495 8 4 5 9 53 15 6 5 3116 5 9 63 2 B 3 B 66 0 5 3 23 6 5 33 9 4 2 89 4 8 9 0 5 4 7 39 110 62 7 6 5 52 0 4 7 22 6 4 3 27 518772285874 5 9 7 & 7 3 92 4 26 6 16 4 5 9 03 7 10 9544 155 8 92 13 0 95 55 4 e190 92 3 4使用KNN和SV
6、M对digits测试集分类引用 sklearn 的 svm.SVC 和 neighbors.KNeighborsClassifier 模块调用算法,使用 classification_report查看预测结果的准确率和召回率 from sklearn.metrics import classification_reportfrom sklearn import neighborsclf = neighbors.KNeighborsClassifier。clf.fit(x_train,y_train)y_pred=clf.predict(x_test)print classification_r
7、eport(y_test, y_pred)from sklearn.svm import SVCclf = SVC()clf.fit(x_train,y_train)y_pred=clf.predict(x_test)print classification_report(y_test, y_pred)KNN的预测结果:所有数字的预测正确率几乎达到了 100%precisionrecallfl-scoresupportIe1.001.001.0032| | 10.951.000.9739|2l.SSi.sal.SS32|31.000.980.99451 41.001.001.0035| 5。9
8、71.000.99.351| 61.001.001.0030!1 70.970.970.9739| j 81.000.950.9737j90.970.970.9736avg / total3.993.99S.99366SVM的预测结果:对部分数字的预测误差较大,基本情况不如KNNprecisionrecallfl-scoresupport01.000.510.903211.000.386.5639| 21.000.500.67321 31.000.360.5245,41.000.660.75351 50.171.000.2935| 61.000.830.913071.000.260.4139,
9、81.000.080.153791.000.580.7436avg / total0.920.530.583&0考虑,四分类器的特性,在分类前对特征值进行标准化后再分类:from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() x_train = min_max_scaler.fit_transform(x_train) x_test = min_max_scaler.fit_transform(x_test)标准化数据后SVM的预测结果达到了 KNN的准度:precisionrecallfl
10、-scoresupport61.001.001.003411| 1S.951.00S.9846! 20.971.000.9933I |1 31.000.960.98461 41.001.001.0034| I 51.001.001.0040| 60.971.000.9828| 70.941.000.9734Ills0.940.890.923891.000.940.9733avg / total0.98.980.98366使用贝叶斯和决策树对iris数据集分类from sklearn.model_selection import train_test_split=0 x_train,x_test
11、,y_train,y_test=train_test_split(iris.data,iris.target,test_siz.4)from sklearn.metrics import classification_reportfrom sklearn import naive_bayesclf = naive_bayes.GaussianNB()clf.fit(x_train,y_train)y_pred=clf.predict(x_test)print classification_report(y_test, y_pred)from sklearn import treeclf = t
12、ree.DecisionTreeClassifier()clf.fit(x_train,y_train)y_pred=clf.predict(x_test)print classification_report(y_test, y_pred)决策树和贝叶斯都有较好的分类效果precisionrecallfl-scoresupport1 e1.001.001.0015! 10.920.960.9424| 20.950.900.9321avg / total0.950.950.9560precisionrecallfl-scoresupport1 e1.001.001.0015j 1.880.92
13、0.90241 20.900.86.8821avg f total0.920.920.9260五、实验结果分析为什么用svm和knn处理digits数据集,用tree和bayes处理iris数据集,这是 一个经验问题。我们都知道digits数据集的每一个特征就是像素点的像素值,他们的维度都是在 0255以内;像素点之间的维度完全一致,互相没有优先级。这种情况下使用线性分类器 如KNN、SVM、Logistic会有更好的效果。而iris数据集虽然长度和宽度维度差不多相同,但是两者之间有优先级的区分,按 照人脑分类的思维方式可能是先按照长度判断再按照宽度等思维方式,很接近决策树的算 法原理,贝叶斯
14、同样。所以概率性分类器有更好的效果。实际情况也是使用SVM预测iris的结果和Bayes预测digits的结果不甚理想(虽然 也有很高的准度了)。当然,通过调整分类器的参数,能使各个分类器的预测结果都达到满意结果,综合表 现还是KNN更抢眼,能在各种数据集面前都有出色表现,但KNN在训练样本数量达到一定 程度后,有超高的计算复杂度。所以面对实际情况,选用什么分类器,如何调节参数都是 值得深思的问题。项目2:基于sklearn的数据聚类挖掘一、实验任务熟悉sklearn数据挖掘平台的基本功能。用K-Means进行数据聚类分析。二、实验环境及条件sklearn-0.18.0python-2.7.1
15、3matplotlib-1.5.3-cp27-cp27m-win_amd64numpy-1.11.3+mkl-cp27-cp27m-win_amd64scipy-0.19.0-cp27-cp27m-win_amd64三、实验数据随机产生的100个坐标点,范围为0,100四、实验内容及过程随机产生坐标值产生的随机值在0-100,因为sklearn的k-means模块要求输入的坐标形式为x0,y0,,x,y,xn,yn,而实际产生的是x0,,xn和y0,,yn,所以还需要对坐标进行一次转换from sklearn.cluster import KMeansimport numpy as npimp
16、ort matplotlib.pyplot as pltimport randomdef create_coordinate():x,y=,for i in range(100):append(random.randint(0,100)y.append(random.randint(0,100)return x,yx,y=create_coordinate()old_coordinate=xi,yi for i in range(100)coordinate=np.array(old_coordinate)print old_coordinate产生的随机坐标值:邑 1982, 21, 27,
17、 85, 15, 55明,17, 50, 3, 94, 71,。32, 7713, 的 元, 75, 勺, 31, 91 46 34, 5&L 98,346190, 95, 40, 8,叽23, fl,皿,97, 76, 2Q t 73, 33, 7Sf 69, 60, ae, 14, 100, 20_ 皿 48, 61, 63, 29, 41, 血 100, 80, 95, 94, 61 1, 36, 43, 11, 92, 77, 100,饥 其,86= 86, 32, 95, 65, 7,驱,6, 37 , 妇, 关 【了虬 3 78, 工们5町,3, 4, 93, 42, 俱 52,国
18、,刃,1, 23, 11, 233 消,41, 18, 87,6% 漏马 19,77,37,63,19,码 与 92, 皿 461.也0,63,明,11,7归, 39, 口3, 昵, 54, 93,J L以57L50,81俱汩,技,14, 1 町 Q3, 35,凹穴 79, 81,先, g 钮膈 2&L 郭,8, 51, 7, 57, 5, 54 58, 85, 4, 24, 33,顷 10, 7714, 12, 42. 15, 361, 14, 77, 41. 56. 63, 591, 21, 33, 99, 301, 66, 65, 89, 59, 22, 7t 96, 31, 72, 8
19、, 33, 5田,15, 32, 46, 36创建做图函数使用k-means对坐标点分为3类,对0类标为红色,1类标为绿色,2类标为蓝色。并将三类坐标 的中心点以*表示在图中def create_chart(x,y,label,center):x_0=xiforiinrange(len(x)iflabeli=0 x_1=xiforiinrange(len(x)iflabeli=1x_2=xiforiinrange(len(x)iflabeli=2y_0=yiforiinrange(len(y)iflabeli=0y_1=yiforiinrange(len(y)iflabeli=1y_2=yif
20、oriinrange(len(y)iflabeli=2plt.scatter(x_0,y_0,c=r)plt.scatter(x_1,y_1,c=g)plt.scatter(x_2,y_2,c=b)plt.scatter(i0 for i in center,i1 for i incenter,c=m,s=600,marker=*)plt.grid()plt.show()使用k-means聚类并预测新增点的类别kmeans = KMeans(n_clusters=3, random_state=0).fit(coordinate)print kmeans.predict(0, 0, 50,50
21、,100, 100) create_chart(x,y,kmeans.labels_,kmeans.cluster_centers_)对新点的预测:2 2 1点的聚类情况:五、实验结果分析这次试验,使用sklearn的k-means对100个坐标点聚类。K-means因为其本身算法的原因, 点数越多聚类速度越慢。所以在20个点和100个点的聚类时间上有很大差距。聚类问题不同于分类问题,没有明确的预测和分类结果,聚类时对数据的边界可能会各 不相同,聚类问题在用户画像/个性化推荐等应用上有较好地发挥。实验3:在Python程序中引用sklearn一、实验任务用Python开发一个综合部分挖掘算法的
22、演示程序,核心算法来自sklearn类库。演示程序界面友好。二、实验环境及条件sklearn-0.18.0python-2.7.13matplotlib-1.5.3-cp27-cp27m-win_amd64numpy-1.11.3+mkl-cp27-cp27m-win_amd64scipy-0.19.0-cp27-cp27m-win_amd64 PyQt4三、实验数据Iris数据集Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理Iris也称鸢尾花卉 数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数 据,每个数据包含4个属性。可通过花萼
23、长度,花萼宽度,花瓣长度,花瓣宽度4个属性预 测鸢尾花卉属于(Setosa,Versicolour, Virginica)三个种类中的哪一类。Digits数据集美国著名数据集NIST的子集,模式识别常用实验数据集,图像属于灰度图像。分辨率为 8x8四、实验内容及过程使用PyQt4创建windows窗体,并提供可选择的分类方式:SVM支持向量机算法KNNK邻近算法Bayes朴素贝叶斯算法TreeC4.5决策树算法LogisticLogisti c回归算法可选择的归一化方式:Standard-标准归一化MaxAndMin-最大最小归一化可选择的验证比例 可选范围一一(0,1)可调节的分类器参数根据
24、具体分类器设置参数部分代码 确认按钮响应事件def OKPushButton_OnClick(self):data_name = self.data_comboBox.currentText()classify_name = self.classify_comboBox.currentText()normalization_name = self.normalization_comboBox.currentText()parameter_string = self.parameter_text.toPlainText()validation_string = self.validation_t
25、ext.text()aly_test,y_pred=self.load_datasets_and_classify(data_name,classify_name,norization_name,parameter_string,validation_string)from sklearn.metrics import classification_reportself.descTextEdit.setText(classification_report(y_test, y_pred)分类算法执行def load_datasets_and_classify(self,data_name,cla
26、ssify_name,normalization_name,parameter_string,validation_ing):from sklearn import datasets from sklearn.model_selection import train_test_split rate=0.2 if validation_string !=:try:rate=float(validation_string)except:self.alert_info(u输入的数值必须是广1的浮点数) returnif data_name = iris:origin_data=datasets.load_iris()elif data_name = digits:origin_data=datasets.load_digits() else:self.alert_info(u 未知数据集)returndata=origin_data.datatarge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年工程履行担保协议精简版一
- 2024年定制包装材料供应合同
- 2024年专项授权代表合同范本
- 2024年专业物流企业运输业务合作经营合同
- 2024届毕业生实习与就业协议
- 小学安全常规教育主题班会
- 2024年分公司承包经营合同一
- 2024版高速公路照明工程合同3篇
- 2024大数据分析与咨询服务协议
- 2024年度建筑工程合同中的风险评估与信用管理3篇
- 2024春期国开电大本科《中国现代文学》在线形考(阶段作业4)试题及答案
- 第3章《勾股定理》-2024-2025学年八年级上册数学单元测试卷(苏科版)
- 《赤壁赋》教学课件
- 临床基因扩增PCR实验室SOP标准操作程序文件(32项)
- 2024精神分裂症维持治疗中国专家共识(全文)
- 家校沟通经验分享-沟通有方法教育有温度
- 甘肃省定西市临洮县2023-2024学年七年级下学期期中语文试题
- 南京市鼓楼区2023-2024学年九年级上学期期末英语试卷
- 中职新教材思政课职业道德与法治期末试卷
- 员工反腐败与合规培训制度
- 仓储与配送管理 课件 第2章仓库规划与布局设计
评论
0/150
提交评论