Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

MengFanjun的博客

视频教程:【莫烦Python】Scikit-learn (sklearn) 优雅地学会机器学习

首先从安装sklearn入手,我用的是python3.7,需要安装numpy和scipy,安装之后,就可以用sklearn自带的数据了,就用它自带的鸢尾花了 在这里插入图片描述 程序示例(我是用Pycharm运行的):

1
2
3
4
5
6
7
8
9
10
import numpy as np
from sklearn import datasets##从sklearn数据库导入数据
from sklearn.model_selection import KFold
from sklearn.model_selection import train_test_split##从sklearn数据库导入函数
from sklearn.neighbors import KNeighborsClassifier##从sklearn数据库导入算法,K邻近分类

iris=datasets.load_iris()##导入鸢尾花数据
iris_X=iris.data##花的属性存在data里面
iris_Y=iris.target##花的分类在target里面
print(iris_X[:2,:]) ##打印出iris的属性,2个

输出结果:

1
2
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]]

有花的4种属性,可能是花的大小什么的,不是很懂。

再看看他的分类:

1
print(iris_Y)##花的分类

输出结果:

1
2
3
4
5
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]

0代表一类,1代表一类,2代表一类

我们要去学习花的四个属性搭配上他的类别,会预测出新的东西

这个函数分出了我们的用于学习的data和测试的data,测试数据比例占30%,训练数据占70%,这些数据被分成两部分的好处是他们不会互相影响

1
2
X_train,X_test,Y_train,Y_test=train_test_split(iris_X,iris_Y,test_size=0.3)##train_data:所要划分的样本特征集 train_target:所要划分的样本结果 test_size:样本占比,如果是整数的话就是样本的数量
print(Y_train)#看看他的类别

输出结果:

1
2
3
[2 1 1 1 0 0 1 0 2 1 1 2 0 0 0 1 0 1 0 2 1 1 0 2 2 2 1 0 2 1 1 2 1 1 1 2 0
1 2 0 0 1 1 0 0 2 2 2 1 2 0 2 1 0 1 0 1 0 2 2 1 0 0 1 0 0 0 1 1 0 2 2 0 1
0 2 1 1 2 2 2 2 0 2 1 0 0 0 1 2 0 1 1 2 2 1 2 2 1 2 2 2 0 2 0]

这里的数据是被打乱的,可以在机器学习过程中不会有排列在一起的影响

利用K邻近算法进行机器学习 下面进行分类:

1
2
3
4
knn=KNeighborsClassifier()##机器学习命令
knn.fit(X_train,Y_train)##这个函数帮助我们完成学习的步骤,所有training在这一步进行
print(knn.predict(X_test))##机器预测测试数据结果,这里的knn已经训练完了
print(Y_test)##之前的真实数据

输出结果:

1
2
3
4
[2 1 0 0 0 0 2 0 2 1 0 2 2 0 0 1 0 1 2 0 1 2 2 0 0 1 2 0 1 1 2 0 1 2 1 2 0
2 2 0 0 1 0 2 2]
[2 1 0 0 0 0 1 0 2 1 0 2 2 0 0 1 0 1 2 0 1 2 2 0 0 1 2 0 1 1 2 0 1 2 1 2 0
2 2 0 0 1 0 2 2]

结果出现1-2位不同,预测得很好,机器学习只能大概模拟出数据,不能完全还原真实数据

评论