机器学习_KNN算法

文章目录

前言

一、KNN算法思想是什么?

二、预测电影类型

1.样本相似性

2.利用K近邻算法预测电影类型

3.K值的选择

三、鸢尾花案例

总结


前言

K-近邻算法(K Nearest Neighbor,简称KNN)

KNN算法是最开始的基础算法,可以解决分类问题和回归问题.

一、KNN算法思想是什么?

若一个样本在特征空间中的k个最相似的样本大多数属于某一个类别,则该样本也属于这个类别

 例如:根据你的邻居判断出你的类别.

二、预测电影类型

1.样本相似性

样本相似性:样本都是属于一个任务数据集的.样本距离越近则越相似

2.利用K近邻算法预测电影类型

 1.分别计算十号电影与前九个电影的距离,k=5找到最相似的电影类别,决定10号电影的类别

可以根据距离近的类别判断出预测目标类别

3.K值的选择

k值过小:用较小领域中的训练示例进预测,容易受到异常点的影响

k值过大:用较小的领域中的实例进行预测,容易受到样本均衡的问题

三、鸢尾花案例

实现流程:

# 1 获取数据集

# 2 数据基本处理

# 3 数据集预处理-数据标准化

# 4 机器学习(模型训练)

# 5 模型评估

# 6 模型预测

1.加载数据集

from sklearn.datasets import load_iris


# 加载鸢尾花数据集, 并显示属性 dataset.data .target .target_names .feature_names .DESCRdef dm01_loadiris():
    # 加载数据集    
    mydataset = load_iris()
     # 查看数据集信息   
    print('\n查看数据集信息-->\n', mydataset.data[:5])    
    # 查看目标值   
    print('mydataset.target-->\n', mydataset.target)    
    # 查看目标值名字    
    print('mydataset.target_names-->\n', mydataset.target_names)    
    # 查看特征名
   print('mydataset.feature_names-->\n', mydataset.feature_names)
    # 查看数据集描述    
    print('\nmydataset.DESCR-->\n', mydataset.DESCR)    
    # 数据文件路径
    print('mydataset.filename-->\n', mydataset.filename)


2.查看类别划分

import seaborn as sns 
import matplotlib.pyplot as plt 
import pandas as pd
 #显示鸢尾花数据
def dm02_showiris():    
    # 1 载入鸢尾花数据集 并显示特征名称.feature_names
    mydataset = load_iris()   
    print(mydataset.feature_names)    
    # 2 把数据转换成dataframe格式 设置data, columns属性 目标值名称    
    iris_d = pd.DataFrame(mydataset['data'], columns=mydataset.feature_names)                
    iris_d['Species'] = mydataset.target
    print('\niris_d-->\n', iris_d)
    col1 = 'sepal length (cm)'
    col2 = 'petal width (cm)'    
    # 3 sns.lmplot()显示    
    sns.lmplot(x=col1, y=col2, data=iris_d, hue='Species', fit_reg=False)           
    plt.xlabel(col1)    
    plt.ylabel(col2)   
    plt.title('iris')    
    plt.show()

3.划分数据集

from sklearn.model_selection import train_test_split
# 数据集划分
def dm03_traintest_split():
    # 1 加载数据集
    mydataset = load_iris()
    # 2 划分数据集    
    X_train, X_test, y_train, y_test =  train_test_split(mydataset.data, mydataset.target, test_size=0.3, random_state=22)
    print('数据总数量', len(mydataset.data))
    print('训练集中的x-特征值', len(X_train))
    print('测试集中的x-特征值', len(X_test))
    print(y_train)

4.模型训练

# 导入类库
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
def dm04_模型训练和预测():
    # 1 获取数据集
   mydataset = load_iris()
    # 2 数据基本处理
    x_train, x_test, y_train, y_test =  train_test_split(mydataset.data, mydataset.target, test_size=0.2, random_state=22)
    # 3 数据集预处理-数据标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    # 让测试集的均值和方法, 转换测试集数据;
    x_test = transfer.transform(x_test)
    # 4 机器学习(模型训练)
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train, y_train)
    # 5 模型评估 直接计算准确率 100个样本中模型预测对了多少
    myscore = estimator.score(x_test, y_test)    
    print(‘myscore-->’, myscore)
    # 6 模型预测  # 需要对待预测数据,执行标准化    
    print('通过模型查看分类类别-->', estimator.classes_)   
    mydata =  [[5.1, 3.5, 1.4, 0.2], [4.6, 3.1, 1.5, 0.2]]
    mydata = transfer.transform(mydata)    print('mydata-->', mydata)
    mypred = estimator.predict(mydata)    print('mypred-->\n', mypred)
    mypred = estimator.predict_proba(mydata)    print('mypred-->\n', mypred)

5.模型评估

# 1 获取数据集mydataset = load_iris()
# 2 数据基本处理
x_train, x_test, y_train, y_test = train_test_split(mydataset.data, mydataset.target, test_size=0.2, random_state=22)
# 3 数据集预处理-数据标准化transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
# 让测试集的均值和方法, 转换测试集数据;x_test = transfer.transform(x_test)
# 4 机器学习(模型训练)
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train, y_train)
# 5-1 直接使用score函数 模型评估 100个样本中模型预测对了多少
myscore = estimator.score(x_test, y_test)
print('myscore-->', myscore)
# 5-2 利用sklearn.metrics包中的 accuracy_score 方法
y_predict = estimator.predict(x_test)
myresult = accuracy_score(y_test, y_predict)
print('myresult-->', myresult)

总结

以上就是今天要讲的内容,本文简单介绍了KNN算法的思想以及应用,KNN算法是机器学习中的经典算法.

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值