【无标题】kNN算法学习

import numpy as np
import pandas as pd

class KNN(object):
    def __init__(self,path,testdata,k):
        self.path=path
        self.testData=testdata
        self.k=k

    def readData(self):
        #读取数据
        try:
            self.data = pd.read_csv(self.path,sep=',',encoding='gbk')
        except:
            self.data = pd.read_excel(self.path)
        # return self.data

    def clearData(self):
        #清洗空值的数据
        self.data.dropna(axis=1,how='all',inplace=True)
        self.data.dropna(axis=0,how='all',inplace=True)

    def distance(self):
        # 计算距离
        self.data['distance'] = np.sqrt((self.data['搞笑镜头']-self.testData[0])**2
            +(self.data['拥抱镜头']-self.testData[1])**2+(self.data['打斗镜头']-self.testData[2])**2)

    def KNN_way(self):
        # KNN算法函数
        sort_list = sorted(self.data['distance'])[:self.k]   #将距离一列进行排列存入sort_list
        list=[]
        for i in sort_list:
            list.append(self.data.loc[self.data['distance']==i]['电影类型'].values)
        df = pd.DataFrame({'type':list})

        top_type = df['type'].describe()[2][0]
        print(top_type)

test = KNN(r'C:\Users\Administrator\Desktop\电影分类数据.xlsx',[23, 3, 17],5)
test.readData()
test.clearData()
test.distance()
test.KNN_way()

from sklearn.neighbors import KNeighborsClassifier


knn = neighbors.KNeighborsClassifier()  # 取得knn分类器
knn.fit(data, labels)  # 导入数据进行训练,data为属性,labels为标签
print('预测类型为:', knn.predict([[23,3,17]]))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值