众所周知sklearn是一个机器学习的集大成框架
机器学习的流程
1.获取数据,没数据肯定没法学习
from sklearn import datasets
import numpy as np
import pandas as pd
#从数据里面看这就是一个分类的问题,因为答案只有0,1,2三个,一般机器学习不能识别字符之类的,用0,1,2表示三个数据
#比如判断是否是一个女神,可以从大量的脸部数据,身材数据进行判断,那么需要的是答案,0不是女神,1是女神
#脸部和身材数据肯定也有特征,比如三围,胸围,腰围,臀围,那么这三个值就是一个特征,而具体数值就是数据,0,1就是答案代表是否美女
iris = datasets.load_iris() #获取数据,特征和答案
datas = iris['data'] #获取数据
target = iris['target'] #获取答案
feature = iris['feature_names'] #获取特征
print(feature) #看一下特征
print(feature.count) #看一下特征的数目
print(datas) #看一下具体数据
print(datas.shape) #看一下数据的纬度
print(target) #看一下答案
print(target.shape) #看一下有多少答案
2.获取完数据,进行数据拆分,因为不可能都给机器学,总还得留点练习题
d_train,d_test,t_train,t_test = train_test_split(datas,target,test_size=0.2) #test_size为拆分比例,具体多少用来训练,多少用来测试,这是训练0.8测试0.2
print(d_train.shape)
3.数据的预处理,压缩
#练习集压缩
scaler1 = preprocessing.StandardScaler().fit(d_train) #创建一个幅度缩放的对象
d_train = scaler1.transform(d_train) #进行幅度缩放,就是把所有数据压缩到很小,【-3:3】大概这个范围
print(d_train)
#同样测试集也需要同样操作
scaler2 = preprocessing.StandardScaler().fit(d_test)
d_test = scaler1.transform(d_test)
4.创建模型开始训练,模型是根据项目需求来的,这就是一个k临近分类算法
m_n = neighbors.KNeighborsClassifier(n_neighbors=5)
m_n.fit(d_train,t_train)
5.测试完成得到正确率
#测试一下训练的咋样
y_result = m_n.predict(d_test)
res = y_result == t_test #用预测结果和实际结果比较
print(res)
right_rate = sum(y_result)/t_test.shape[0] #求正确率
print(right_rate) #还可以,有0.87
再贴下完整的代码,略微有点改进,以完整代码为准
from sklearn import datasets,preprocessing,neighbors
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
import pandas as pd
#从数据里面看这就是一个分类的问题,因为答案只有0,1,2三个,一般机器学习不能识别字符之类的,用0,1,2表示三个数据
#比如判断是否是一个女神,可以从大量的脸部数据,身材数据进行判断,那么需要的是答案,0不是女神,1是女神
#脸部和身材数据肯定也有特征,比如三围,胸围,腰围,臀围,那么这三个值就是一个特征,而具体数值就是数据,0,1就是答案代表是否美女
iris = datasets.load_iris() #获取数据,特征和答案
datas = iris['data'] #获取数据
target = iris['target'] #获取答案
feature = iris['feature_names'] #获取特征
# print(feature) #看一下特征
# print(feature.count) #看一下特征的数目
# print(datas) #看一下具体数据
# print(datas.shape) #看一下数据的纬度
# print(target) #看一下答案
# print(target.shape) #看一下有多少答案
#数据拿到后进行训练集,测试集拆分
d_train,d_test,t_train,t_test = train_test_split(datas,target,test_size=0.2) #test_size为拆分比例,具体多少用来训练,多少用来测试,这是训练0.8测试0.2
# print(d_train.shape)
#数据压缩
#练习集压缩
scaler1 = preprocessing.StandardScaler().fit(d_train) #创建一个幅度缩放的对象
d_train = scaler1.transform(d_train) #进行幅度缩放,就是把所有数据压缩到很小,【-3:3】大概这个范围,为毛要这么干我也不太清楚
print(d_train)
#同样测试集也需要同样操作
scaler2 = preprocessing.StandardScaler().fit(d_test)
d_test = scaler1.transform(d_test)
#创建模型,开始训练
m_n = neighbors.KNeighborsClassifier(n_neighbors=5)
m_n.fit(d_train,t_train)
#训练完毕
#测试一下训练的咋样
def get_rr(obj):
y_result = obj.predict(d_test)
res = y_result == t_test #用预测结果和实际结果比较
print(accuracy_score(y_result,t_test))
get_rr(m_n)
#分类问题有很多模型,比如还可以用决策树分类算法
d_tree = DecisionTreeClassifier(max_depth=2) #创建一个决策树模型,详细属性看决策树算法
d_tree.fit(d_train,t_train)
#训练完毕
get_rr(d_tree)
明白流程和sklearn的一些基础用法就行,