K近邻(knn)算法预测电影类型案例1案例2 Facebook入住地点

K近邻思想: 根据你的"邻居们"来确定你的类别

你一觉醒来,不知道自己身在何方里,你能通过计算机定位到周围5个"最近的"邻居,其中有4个身处火星,1个身处月球,你认为应该自己距火星更近,自己应该在火星...(K近邻算法又称为Knn算法,属于分类算法)

案例1

from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd

def knncls():

    """
    预测电影分类
    :return:
    """
    data = pd.read_csv("./data/movies.csv")
    # 提取特征值, 目标值
    x = data.drop(["type", "movie_name"], axis=1)
    y = data["type"]
    # 分割数据集
    x_train, x_test, y_train, y_test =train_test_split(x, y, test_size=0.25)

    # 通过knn进行预测
    knn = KNeighborsClassifier()

    knn.fit(x_train, y_train)

    y_predict = knn.predict(x_test)
    print(x_test, "的预测结果为:", y_predict)

    print("预测准确率为:", knn.score(x_test, y_test))

if __name__ == '__main__':
    knncls()
movie_name,fight,kiss,type
California Man,3,104,1
He's not Really into dues,2,100,1
Beautiful Woman,1,81,1
Kevin Longblade,101,10,2
Robo Slayer 3000,99,5,2
Amped II,98,2,2
unname,18,90,1
vampire,90,15,2

案例2 Facebook入住地点

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import pandas as pd

def knncls():
    """
    facebook题目:k近邻算法预测入住位置
    :return:
    """
    # 使用pandas读取100000数据
    train_data = pd.read_csv("./data/fb/train.csv", nrows = 100000)

    # 特征工程
    # 1.缩小x,y的范围
    train_data = train_data.query("x>1.0 & x<1.5 & y>1.0 & y<2.5")

    # 2.解析时间戳
    time_value = pd.to_datetime(train_data["time"], unit="s")
    time_value = pd.DatetimeIndex(time_value)

    # 3.添加特征(时间)
    train_data["weekday"] = time_value.weekday
    train_data["year"] = time_value.day
    train_data["hour"] = time_value.hour
    train_data["minute"] = time_value.minute

    # 4.删除特征(时间戳)
    train_data = train_data.drop(["time"], axis=1)

    # 5.只保留入住人数大于5的place,生成新的train_data
    place_count = train_data.groupby("place_id").count()
    place_count_r = place_count[place_count.row_id > 3].reset_index()
    train_data = train_data[train_data["place_id"].isin(place_count_r["place_id"])]

    # 提取特征值和目标值
    x = train_data.drop(["place_id", "row_id"], axis=1)

    y = train_data["place_id"]

    # 分割数据集
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

    # 进行标准化
    std = StandardScaler()

    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # 实例化knn估计器
    knn = KNeighborsClassifier()

    knn.fit(x_train, y_train)

    # 预测结果
    y_predict = knn.predict(x_test)

    # 打印准确率
    print("准确率为:",knn.score(x_test, y_test))

    return None

if __name__ == '__main__':
    knncls()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【论文推荐】最新5篇知识图谱相关论文—强化学习、习知识图谱的表示、词义消除歧义、并行翻译嵌入、图数据库

【导读】专知内容组整理了最近五篇知识图谱(Knowledge Graph)相关文章,为大家进行介绍,欢迎查看! 1. DeepPath: A Reinforce...

48040
来自专栏专知

【论文推荐】最新六篇行人再识别相关论文—特定视角、多目标、双注意匹配网络、联合属性-身份、迁移学习、多通道金字塔型

【导读】专知内容组整理了最近六篇行人再识别(Person Re-Identification)相关文章,为大家进行介绍,欢迎查看! 1. Learning Vi...

88750
来自专栏java一日一条

解密:阿里巴巴公司根据截图查到泄露信息的员工的技术是?

本文提供的一种实现“阿里通过肉眼无法识别的标识码追踪员工”的技术手段。通过看其他答主的分析,阿里可能还没用到频域加水印的技术。

20420
来自专栏CVer

[计算机视觉论文速递] 2018-03-11

通知:这篇推文有10篇论文速递信息,涉及目标检测、行人重识别Re-ID、图像检索和Zero-Shot Learning等方向 这篇文章本来是在2018-03-1...

47180
来自专栏CVer

人工智能 | 中国计算机学会推荐国际学术刊物/会议

关注CVer公众号的群体大多以学生为主,特别是研究生。相信在帮boss做事的时候,论文也是核心工作。Amusi平时爱推送一些论文速递,但这么多论文,怎么快速区分...

20710
来自专栏专知

【干货】Python大数据处理库PySpark实战——使用PySpark处理文本多分类问题

【导读】近日,多伦多数据科学家Susan Li发表一篇博文,讲解利用PySpark处理文本多分类问题的详情。我们知道,Apache Spark在处理实时数据方面...

13.1K100
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。

相关论文的链接:Combining Sketch and Tone for Pencil Drawing Production        第一次看《Com...

45390
来自专栏专知

【论文推荐】最新八篇主题模型相关论文—在线光谱学习、PAM变分推断、章节推荐、多芯片系统、文本分析、动态主题模型

18040
来自专栏专知

【论文推荐】最新七篇图像检索相关论文—草图、Tie-Aware、场景图解析、叠加跨注意力机制、深度哈希、人群估计

35530
来自专栏PPV课数据科学社区

【学习】常用的机器学习&数据挖掘知识点

Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Squa...

381120

扫码关注云+社区

领取腾讯云代金券