机器学习案例实操——鸢尾花

机器学习案例实操——鸢尾花

 本文做要给大家回归一下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


编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!










评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值