1 / 15
文档名称:

数据挖掘实训报告.doc

格式:doc   大小:260KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据挖掘实训报告.doc

上传人:读书之乐 2022/12/7 文件大小:260 KB

下载得到文件列表

数据挖掘实训报告.doc

文档介绍

文档介绍:该【数据挖掘实训报告 】是由【读书之乐】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【数据挖掘实训报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。项目1:基于sklearn的数据分类挖掘
一、项目任务
①熟悉sklearn数据挖掘的基本功能。
②进行用朴素贝叶斯、KNN、、SVM算法进行数据分类分析。
二、项目环境及条件
sklearn-
python-
numpy-+mkl-cp27-cp27m-win_amd64
scipy--cp27-cp27m-win_amd64
matplotlib--cp27-cp27m-win_amd64
三、实验数据
Iris数据集
Iris数据集是常用的分类实验数据集,由Fisher,1936收集整顿。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集涉及150个数据集,分为3类,每类50个数据,每个数据涉及4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
Digits数据集
美国出名数据集NIST的子集,模式辨认常用实验数据集,图像属于灰度图像。辨别率为8x8
四、项目内容及过程

从sklearn中读取iris和digits数据集并测试打印
fromsklearnimportdatasets
iris=()
digits=()
print'iris:',,'\ndigits:',
,ndarray会自动省略较长矩阵的中间部分。
Iris数据集的样本数据为其花瓣的各项属性
Digits数据集的样本数据为手写数字图像的像素值

引入sklearn的model_selection使用train_test_split划分digits数据集,训练集和测试集比例为8:2

x_train,x_test,y_train,y_test=train_test_split(,,test_size=)
print'x_train:',x_train,'\nx_test:',x_test,'\ny_train:',y_train,'\ny_test:',y_test

,使用classification_report查看预测成果的精确率和召回率

fromsklearnimportneighbors
clf=()
(x_train,y_train)
y_pred=(x_test)
printclassification_report(y_test,y_pred)

clf=SVC()
(x_train,y_train)
y_pred=(x_test)
printclassification_report(y_test,y_pred)
KNN的预测成果:所有数字的预测对的率几乎达到了100%
SVM的预测成果:对部分数字的预测误差较大,基本状况不如KNN
考虑SVM分类器的特性,在分类前对特性值进行原则化后再分类:
fromsklearnimportpreprocessing
min_max_scaler=()
x_train=(x_train)
x_test=(x_test)
原则化数据后SVM的预测成果达到了KNN的准度:


x_train,x_test,y_train,y_test=train_test_split(,,test_size=)

fromsklearnimportnaive_bayes
clf=()
(x_train,y_train)
y_pred=(x_test)
printclassification_report(y_test,y_pred)
fromsklearnimporttree
clf=()
(x_train,y_train)
y_pred=(x_test)
printclassification_report(y_test,y_pred)
决策树和贝叶斯均有较好的分类效果
五、实验成果分析
为什么用svm和knn解决digits数据集,用tree和bayes解决iris数据集,这是一种经验问题。
我们都懂得digits数据集的每一种特性就是像素点的像素值,她们的维度都是在0~255以内;像素点之间的维度完全一致,互相没有优先级。这种状况下使用线性分类器如KNN、SVM、Logistic会有更好的效果。
而iris数据集虽然长度和宽度维度差不多相似,但是两者之间有优先级的辨别,按照人脑分类的思维方式也许是先按照长度判断再按照宽度等思维方式,很接近决策树的算法原理,贝叶斯同样。因此概率性分类器有更好的效果。
实际状况也是使用SVM预测iris的成果和Bayes预测digits的成果不甚抱负(虽然也有很高的准度了)。
固然,通过调节分类器的参数,能使各个分类器的预测成果都达到满意成果,综合体现还是KNN更抢眼,能在多种数据集面前均有杰出体现,但KNN在训练样本数量达到一定限度后,有超高的计算复杂度。因此面对实际状况,选用什么分类器,如何调节参数都是值得深思的问题。
项目2:基于sklearn的数据聚类挖掘
一、实验任务
①熟悉sklearn数据挖掘平台的基本功能。
②用K-Means进行数据聚类分析。
二、实验环境及条件
sklearn-
python-
matplotlib--cp27-cp27m-win_amd64
numpy-+mkl-cp27-cp27m-win_amd64
scipy--cp27-cp27m-win_amd64
三、实验数据
随机产生的100个坐标点,范畴为[0,100]
四、实验内容及过程

产生的随机值在0-100,由于sklearn的k-means模块规定输入的坐标形式为[[x0,y0],…,[x…,y…],…,[xn,yn]],而实际产生的是[x0,…,xn]和[y0,…,yn],因此还需要对坐标进行一次转换

importnumpyasnp

importrandom
defcreate_coordinate():
x,y=[],[]
foriinrange(100):
((0,100))
((0,100))
returnx,y
x,y=create_coordinate()
old_coordinate=[[x[i],y[i]]foriinrange(100)]
coordinate=(old_coordinate)
printold_coordinate
产生的随机坐标值:

使用k-means对坐标点分为3类,对0类标为红色,1类标为绿色,2类标为蓝色。并将三类坐标的中心点以‘*’表达在图中
defcreate_chart(x,y,label,center):
x_0=[x[i]foriinrange(len(x))iflabel[i]==0]
x_1=[x[i]foriinrange(len(x))iflabel[i]==1]
x_2=[x[i]foriinrange(len(x))iflabel[i]==2]
y_0=[y[i]foriinrange(len(y))iflabel[i]==0]
y_1=[y[i]foriinrange(len(y))iflabel[i]==1]
y_2=[y[i]foriinrange(len(y))iflabel[i]==2]
(x_0,y_0,c='r')
(x_1,y_1,c='g')
(x_2,y_2,c='b')
([i[0]foriincenter],[i[1]foriincenter],c='m',s=600,marker='*')
()
()
-means聚类并预测新增点的类别
kmeans=KMeans(n_clusters=3,random_state=0).fit(coordinate)
([[0,0],[50,50],[100,100]])
create_chart(x,y,,)
对新点的预测:
221
点的聚类状况:
五、实验成果分析
这次实验,使用sklearn的k-means对100个坐标点聚类。K-means由于其自身算法的因素,点数越多聚类速度越慢。因此在20个点和100个点的聚类时间上有很大差距。
聚类问题不同于分类问题,没有明确的预测和分类成果,聚类时对数据的边界也许会各不相似,聚类问题在顾客画像/个性化推荐等应用上有较好地发挥。