赞
踩
本文做要给大家回归一下Numpy的基础知识,毕竟python 中的sklearn中使用的是这种数据类型。然后用一个鸢尾花分类实例给大家演示机器学习的整个过程,让你快速入门机器学习。
1.Numpy基础知识回顾
import numpy as np
arr1=np.array([2,3,4,5,6])#数值型数组
arr2=np.array((2,3,4,5,6))#数值型数组
arr3=np.array(['a','b','c','d'])#字符串型数组
arr4=np.array([(1,2,3),(4,5,6)])#二维数组
print("数组1的各维度:{},数组4的各维度:{}".format(arr1.shape,arr4.shape))
print("数组1的元素个数:{},数组4的元素个数:{}".format(arr1.size,arr4.size))
print("数组1的维度:{},数组4的维度:{}".format(arr1.ndim,arr4.ndim))
print("数组1的数据类型:{},数组4的数据类型:{}".format(arr1.dtype,arr4.dtype))
#数据类型转换
arr1=np.arange(6)
print("将数组arr1元素转为浮点型:{}".format(arr1.astype(np.float64)))
arr2=np.arange(1.0,1.5,0.1)#小数转为整数,小数部分会截断
print("将数组arr2元素转为整型:{}".format(arr2.astype(np.int32)))
arr3=np.array(['1','1.2','1.5'])#含有小数,不能直接转为整数
print("将数组arr3元素转为浮点型:{}".format(arr3.astype(np.float)))
print("将数组arr1元素转为arr3元素类型:{}".format(arr1.astype(arr3.dtype)))
print("将数组arr2元素转为arr3元素类型:{}".format(arr2.astype(arr3.dtype)))
#数据类型转换
arr1=np.arange(6)
print("将数组arr1元素转为浮点型:{}".format(arr1.astype(np.float64)))
arr2=np.arange(1.0,1.5,0.1)#小数转为整数,小数部分会截断
print("将数组arr2元素转为字符串型:{}".format(arr2.astype(np.int32)))
arr3=np.array(['1','1.2','1.5'])#含有小数,不能直接转为整数
print("将数组arr3元素转为浮点型:{}".format(arr3.astype(np.float)))
print("将数组arr1元素转为arr3元素类型:{}".format(arr1.astype(arr3.dtype)))
print("将数组arr2元素转为arr3元素类型:{}".format(arr2.astype(arr3.dtype)))
#数据预处理
arr1=np.array([1,2,np.nan,4])
print("一维数组arr1:{}".format(arr1))
print("判断arr1所有元素是否有缺失值:\n{}".\
format(np.isnan(arr1)))
arr1[np.isnan(arr1)]=0#缺失值填充
print("将arr1中缺失值替换为0:{}".format(arr1))
arr2=np.array([1,2,2,3,3,4])
print("将arr2去重后为:{}".format(np.unique(arr2)))
print("将arr2用set去重后为:{}".\
format(np.array(list(set(arr2)))))
2.辨异识花
import csv
import numpy as np
with open('iris.csv','r') as f :
rows=csv.reader(f)
for row in rows:
print(row)
import csv
import numpy as np
with open('iris.csv','r') as f :
rows=csv.reader(f)
data_file=np.array(list(rows))#将数据转换为数组
print(data_file.shape)#查看数组的形状
print(data_file.size)#查看数组的元素个数
print(data_file.ndim)#查看数组维数
Data=data_file[1:,1:5].astype(float)#将字符串转为浮点
print(np.isnan(Data).any())#检查是否有缺失值
Labels=data_file[1:,-1]#鸢尾花类型标识
print(Labels[Labels==""].shape)#检查是否有缺失值
from sklearn import datasets iris_data = datasets.load_iris() data = iris_data.data#训练样本的值 feature = iris_data.feature_names #训练样本的值对应的名称 target = iris_data.target # 所有样本的目标值 target_names = iris_data.target_names # 目标值对应的名称 X_train = data[:,0:2] # 训练样本的特征 y_train = target # 训练样本的结果 #目前取得样本特征和结果依旧是一一对应的关系 #X_train = data[:,2:4] # 训练样本的特征 import matplotlib.pyplot as plt plt.scatter(X_train[:,0],X_train[:,1],c=y_train) plt.xlabel('Sepal length') #设置x轴的标签 plt.ylabel('Sepal width') #设置y轴的标签 #plt.scatter(X_train[:,0],X_train[:,1],c=y_train) #plt.xlabel('Petal length') #设置x轴的标签 #plt.ylabel('Petal width') #设置y轴的标签 plt.show()
#机器学习
from sklearn.neighbors import KNeighborsClassifier
np.random.seed(0)#设置随机种子,产生的随机数一样
indices = np.random.permutation(len(Data))#随机打乱数组
print(indices)
Data_train = Data[indices[:-10]]#随机选取140样本作为训练集
Labels_train = Labels[indices[:-10]]#随机选取140样本标签作为训练集
Data_test = Data[indices[-10:]]#剩下10个样本作为测试集
Labels_test = Labels[indices[-10:]]#剩下10个样本标签作为测试集
knn = KNeighborsClassifier()#定义一个knn分类器对象
knn.fit(Data_train,Labels_train)#接收两个参数:训练数据集及其样本标签
Labels_predict = knn.predict(Data_test) #调用该对象的测试方法,主要接收一个参数:测试数据集
probility=knn.predict_proba(Data_test)#计算各测试样本基于概率的预测
score=knn.score(Data_test,Labels_test,sample_weight=None)#调用该对象的打分方法,计算出准确率
print('Labels_predict = ')
print(Labels_predict )#输出测试的结果
print('Labels_test = ')
print(Labels_test)#输出原始测试数据集的正确标签
print('Accuracy:',score)#输出准确率计算结果
print(probility)
更新每页代码给大家O(∩_∩)O
编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。