100天机器学习day5之KNN

大家好 我是小k 昨天由于事比较多就没有更新博客 今天让我们来看看KNN算法 下面一张图可以很形象的对KNN算法进行表述


总得来说 今天的代码和第四天的代码没什么太大的区别 这里我就直接将代码直接展示出来 

import pandas as pd
import numpy as np

data = pd.read_csv(r'D:\python\100daysdata\Social_Network_Ads.csv')

x = data.iloc[:,[2,3]].values
y = data.iloc[:,4].values
print(x[0])
print(y[0])

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=1314)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train = sc.fit_transform(x_train)
x_test = sc.fit_transform(x_test)


from sklearn.linear_model import  LogisticRegression
classifier = LogisticRegression()
classifier.fit(x_train,y_train)

y_pred = classifier.predict(x_test)

print(y_test)
print(y_pred)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test,y_pred)
print(cm)
accuracy = (cm[0][0]+cm[0][1])/(cm[0][0]+cm[0][1]+cm[1][0]+cm[1][1])
print(accuracy)


打印结果:[   19 19000]
0
[0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0
 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0
 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0
 0 0 0 1 0 0 1 1 1]
[0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0
 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0
 0 0 0 1 0 0 0 1 1]
[[68  1]
 [21 30]]
0.575

这里我就不解释了 如有疑问可以翻看day4内容

这篇文章我不想就这么水过去 剩下的内容我想详谈下KNN‘分类’算法

1:首先 KNN算法不是靠判别类域方法来确定所属类别的 所以说 对于类域交叉或重叠较多的数据集来说 KNN方法比较合适

2:样本所有特征都要做可比较的量化 假如样本特征中存在非数值类型,则必须要将其转化为数值 假如特征包含颜色 则可以通过将颜色转换为灰度值实现距离计算

3:样本特征都要进行归一化处理 假如一个参数的数值特别大 那么它将会在计算中影响力大于取值较小的参数 so样本参数都要做scale处理

4:选择一个恰当的距离函数计算两个样本间的距离

5:确定K的值 防止拟合与过拟合情况 可以通过交叉验证确定K值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值