购物网站建设特色,高清crm软件价格欧美,怎么建设网站上传音乐,wordpress加密php代码1、#xff1a;前提知识 KNN算法是机器学习算法中用于分类或者回归的算法#xff0c;KNN全称为K nearest neighbour#xff08;又称为K-近邻算法#xff09; 原理#xff1a;K-近邻算法采用测量不同特征值之间的距离的方法进行分类。 优点#xff1a;精度高 缺点…1、前提知识 KNN算法是机器学习算法中用于分类或者回归的算法KNN全称为K nearest neighbour又称为K-近邻算法 原理K-近邻算法采用测量不同特征值之间的距离的方法进行分类。 优点精度高 缺点时间和空间复杂度高 K近邻算法思想有N个样本分布在m个类别中要判定第x个样本为什么类别就要求出x到N个样本每个样本的距离集合从中找出K个最近的样本然后通过k个样本的比例判断x所属类别例如在k个样本中第一类占比较多就判定x是第一类数据。注意计算x到N个样本之间的距离方法有两种第一种是曼哈顿距离第二种是欧式距离他们的计算如下 可以看出曼哈顿距离计算复杂度较低计算速度快。 实现方法基于谷歌公司开发的第三方python库sklearn 实现步骤 1、导入numpy、pandas、matplotlib、from sklearn.neighbors import KNeighborsClassifier第三方库2、导入原始数据导入数据后可以通过散点图进行数据可视化简单了解下数据3、将数据划分为训练数据x_train、y_train和测试数据x_test、y_test注意在KNN中输入数据x为二维数据输出数据y为一维数据。注意二维数据代表数据只能有行和列两个维度但x可以有多个x也叫做特征4、设定KNN算法参数引入KNN模型5、通过fit函数输入训练数据训练KNN模型6、通过测试数据测试KNN模型7、计算模型准确率 2、案例
我有一份原始数据数据中有两个变量分别为“武打镜头”和“接吻镜头”通过这两个变量可以判断这部影片为动作片还是爱情片规则就是武打镜头大于接吻镜头为动作片武打镜头小于接吻镜头为爱情片原始数据如下 代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 导入KNN分类库
from sklearn.neighbors import KNeighborsClassifier# 1、导入数据
movie pd.read_excel(./tests.xlsx,sheet_nameSheet2)
# 2、数据可视化
plt.scatter(movie.loc[:,武打镜头],movie.loc[:,接吻镜头])
plt.show
# 3、训练数据赋值,x(二维)、y(一维)
x_train movie.loc[:,[武打镜头,接吻镜头]]
y_train movie.loc[:,分类情况]
print(type(x_train),type(y_train))
# 4、设置KNN参数近邻数量为5距离计算方法为曼哈顿引入KNN模型
KNN KNeighborsClassifier(n_neighbors5,p1)
# 5、训练模型
KNN.fit(x_train,y_train)
# 6、设置测试数据测试训练完的KNN模型
x_test np.array([[30,2],[3,36],[2,15],[30,2]])
y_test np.array([动作片,爱情片,爱情片,动作片])
y_pred KNN.predict(x_test)
print(y_pred)
# 7、计算测试集准确率accuracy
KNN.score(x_test,y_test)3、鸢尾花分类任务实战
1、学习sklearn中自带的数据集调用方法 导入鸢尾花数据集from sklearn.datasets import load_iris同过tab键代码补齐的方法就能靠大概记忆输入此行代码使用数据集load_iris()如下所示为调用结果结果为字典形式其中data为数据键对应的值为array二维数组150行*4列其中第一列特征为花萼的长度sepal length (cm),第二列特征为花萼的宽度’sepal width (cm)‘,第三列特征为花瓣的长度’petal length (cm)’第四列特征为花瓣的宽度 ‘petal width (cm)’。target键对应的为150组数据对应的分类标签其中0代表’setosa’鸢尾花,1 代表’versicolor’鸢尾花, 2代表’virginica’鸢尾花。其他键表示的就是一些数据集的相关信息。 2、通过字典调用方式获取数据集中的相关数据再根据pandas或者numpy处理数据。
# 获取输入数据
data s_data[data]
pd.DataFrame(data)
# 获取输出数据
target s_data[target]3、将数据集划分为训练数据和测试数据使用sklearn库中model_selection模块中的train_test_split函数
# 导入sklearn自带的切分训练数据和测试数据的包
from sklearn.model_selection import train_test_split# 将数据切分为训练集输入、训练集输出、测试集输入、测试集输出
# test_size的参数如果是整数就会从所有数据中取多少条作为测试数据
# test_size的参数如果是0~1的小数就会从所有数据中按比例取多少条作为测试数据
# random_state参数可以让每次数据切分都一样
x_train, x_test, y_train, y_test train_test_split(data,target,test_size10)4、导入KNN模型训练数据并测试分类效果
# 获取KNN算法
KNN KNeighborsClassifier()
# 训练KNN算法
model KNN.fit(x_train,y_train)
# 测试模型分类效果
model.predict(x_test)
print(y_test)
# 计算分类准确度
model.score(x_test,y_test)4、补充
1、DataFrame数据可以直接用matplotlib中的plot画出数据的折线图下面的例子是画出鸢尾花数据集的特征数据折线图
s_data load_iris()
# 获取输入数据
data s_data[data]
data pd.DataFrame(data,columnss_data[feature_names])
# 用DataFrame直接画图查看数据集
data.plot()2、绘制分类分界图目的是将一个数据集中的数据放在一个坐标系中然后让除了数据以外坐标系中其他区域也显示分类情况
# 1、先划分坐标系
x np.linspace(data2.iloc[:, 0].min(), data2.iloc[:, 0].max(), 1000) # 把x等分成1000份
y np.linspace(data2.iloc[:, 1].min(), data2.iloc[:, 1].max(), 1000) # 把y等分成1000份X, Y np.meshgrid(x, y) # 按行复制y个x按列复制x个y
XY np.c_[X.ravel(), Y.ravel()] # 将x扁平化将y扁平化再一对一组合最终XY形状为(1000000, 2)
# 用KNN模型预测
knn KNeighborsClassifier()
knn.fit(data2, target)
y_pred knn.predict(XY)
y_pred
# 分界图
plt.scatter(XY[:, 0], XY[:, 1], cy_pred)注意上面绘图需要等待可以使用matplotlib自带的绘图函数绘图就不用等待了。 pcolormesh(): 画分界图边界图 plt.pcolormesh(X, Y, y_pred.reshape(1000, 1000))