喜好程度预测

该实验通过KNN算法,基于每年出行的里程数、游戏时间占比和每周吃冰淇淋时间占比等特征,预测海伦女士对约会对象的喜欢程度。实验过程包括数据集划分、标准化、模型训练、测试集验证和实际预测。预测结果显示,对于特定特征的人,海伦女士的喜好分为两类:不喜欢和极具魅力。
摘要由CSDN通过智能技术生成
  1. import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.neighbors import KNeighborsClassifier
    
    df = pd.read_csv('datatest.csv', names=['出行', '游戏时间', '冰激凌', '配对结果'])
    print(df)
    # 取所有的行,1,2,3列作为特征,4列标签结果
    feature = df.iloc[:, 0:3]
    print(feature)
    target = df.iloc[:, -1]
    print(target)
    # 划分数据集test_size:测试集占比 random_state:随机数种子
    # 训练集的特征数据,测试集的特征数据,训练集的目标数据,测试集的目标数据
    x_train, x_test, y_train, y_test = train_test_split \
        (feature, target, test_size=0.20, random_state=1500)
    print(x_train.shape, x_test.shape)
    # 标准化
    ss = StandardScaler()
    x_train = ss.fit_transform(x_train)
    print(x_train)
    # 创建KMN算法对象,指定K值
    knn = KNeighborsClassifier(n_neighbors=3)
    # 训练模型(训练集的特征数据和目标数据)
    knn.fit(x_train, y_train)
    # 用测试集验证数据,得到评价指标
    # 测试集数据也必须标准化,但是不需要再计算均值和方差,训练集进行标准化的时候已经找到了均值和方差
    # 已经找到转换规则,我们把这个规则用在了训练集上,同样我们可以直接用在测试集上,所以在测试集上的处理,我们只需要标准化
    x_test = ss.transform(x_test)
    score = knn.score(x_test, y_test)
    print(f'模型评分{score}')
    
    # 预测
    x_test1 = [[90000, 3.99, 7.25], [1001, 4, 3.2]]
    x_test1 = ss.transform(x_test1)
    y_predict = knn.predict(x_test1)
    print(y_predict)
    
    实验概述
    1. 实验目标和主要内容

实验目标:根据海伦女士对其他人的喜欢程度以及其他人的3种共同特征(每年出行的里程数、玩游戏的时间占比、每周吃冰激凌的时间占比)的数据,通过KNN算法,实现当给出某人这3种特征的具体数据时,预测海伦女士对此人的喜欢程度;

开发平台:PyCharm Community Edition 2021.3.2 x64

语言:Python

主要内容:

海伦女士一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的任选,但她并不是喜欢每一个人。经过一番总结,她发现自己交往过的人可以进行如下分类:

·不喜欢

·魅力一般

·极具魅力

海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每个样本数据占据一行,总共有1000行。海伦收集的样本数据主要包含以下3种特征:

·每年出行的里程数

·玩游戏的时间占比

·每周吃冰淇淋的公升数

根据已有数据通过KNN算法建立模型,预测海伦女士对任意约会对象的喜欢程度。

    1. 实验需求分析
      1. 划分数据集
      2. 数据标准化;
      3. 创建KNN算法对象,指定K值;
      4. 设置训练模型
      5. 用测试集验证数据;
      6. 根据具体数据进行预测。

2、实验设计

2.1关键算法分析

算法1:数据集划分

分析:设置随机数种子,随机取80%的数据作为训练集,20%的数据作为测试集。

主要代码:

算法2:数据标准化

代码:

算法3:创建KNN算法对象,训练模型

代码:

算法4:用测试集验证数据,得到评价指标

主要代码:

算法6:根据给出的具体数据进行预测

概述:给出具体的特征数据,带入模型,预测海伦女士对此人的喜欢程度。

代码:

3、实验结果

对于给出具体的特征数据,带入模型,预测的结果为:

运行结果:

说明海伦女士对每年出行的里程数、玩游戏的时间占比、每周吃冰激凌的时间占比分别为90000, 3.99, 7.25的人的喜欢程度为didntLike,对每年出行的里程数、玩游戏的时间占比、每周吃冰激凌的时间占比分别为1001, 4, 3.2的人的喜欢程度为smallDoses。

4、实验小结

  1. 利用KNN算法进行预测模型的建立,用于训练和测试的数据需要从数据集中划分。原则上训练数据多余测试数据,且数据总量足够多,才能使预测模型更加准确;
  2. 训练数据集和测试集数据都必须做标准化处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值