【人工智能】机器学习之Python使用KNN算法进行电影类型预测以及使用KNN算法对鸢尾花进行分类

简介: 使用KNN进行电影类型预测: 给定训练样本集合 解题步骤: 1.计算一个新样本与数据集中所有数据的距离 2.按照距离大小进行递增排序 3.选取距离最小的k个样本 4.确定前k个样本所在类别出现的频率,并输出出现频率最高的类别编写代码,实现对iris数据集的KNN算法分类及预测要求:(1)数据集划分为测试集占20%;(2)n_neighbors=5;(3)评价模型的准确率;(4)使用模型预测未知种类的鸢尾花。(待预测数据:X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]])iris数据集有150组,每组4个数据。

1. 使用KNN进行电影类型预测:

给定训练样本集合如下:

在这里插入图片描述
求解:testData={"老友记": [29, 10, 2, "?片"]}。

解题步骤:
1.计算一个新样本与数据集中所有数据的距离
2.按照距离大小进行递增排序
3.选取距离最小的k个样本
4.确定前k个样本所在类别出现的频率,并输出出现频率最高的类别

import numpy as np


def createDataset():
    '''
    创建训练集,特征值分别为搞笑镜头、拥抱镜头、打斗镜头的数量
    '''
    learning_dataset = {"宝贝当家": [45, 2, 9, "喜剧片"],
              "美人鱼": [21, 17, 5, "喜剧片"],
              "澳门风云3": [54, 9, 11, "喜剧片"],
              "功夫熊猫3": [39, 0, 31, "喜剧片"],
              "谍影重重": [5, 2, 57, "动作片"],
              "叶问3": [3, 2, 65, "动作片"],
              "伦敦陷落": [2, 3, 55, "动作片"],
              "我的特工爷爷": [6, 4, 21, "动作片"],
              "奔爱": [7, 46, 4, "爱情片"],
              "夜孔雀": [9, 39, 8, "爱情片"],
              "代理情人": [9, 38, 2, "爱情片"],
              "新步步惊心": [8, 34, 17, "爱情片"]}
    return learning_dataset


def kNN(learning_dataset,dataPoint,k):
    '''
    kNN算法,返回k个邻居的类别和得到的测试数据的类别
    '''
    # s1:计算一个新样本与数据集中所有数据的距离
    disList=[]
    for key,v in learning_dataset.items():
       #对距离进行平方和开根号
       d=np.linalg.norm(np.array(v[:3])-np.array(dataPoint))
       #round四舍五入保留两位小数,并添加到集合中
       disList.append([key,round(d,2)])

    # s2:按照距离大小进行递增排序
    disList.sort(key=lambda dis: dis[1]) # 常规排序方法,熟悉key的作用
    # s3:选取距离最小的k个样本
    disList=disList[:k]
    # s4:确定前k个样本所在类别出现的频率,并输出出现频率最高的类别
    labels = {"喜剧片":0,"动作片":0,"爱情片":0}
    #从k个中进行统计哪个类别标签最多
    for s in disList:  
        #取出对应标签
        label = learning_dataset[s[0]] 
        labels[label[len(label)-1]] += 1
    labels =sorted(labels.items(),key=lambda asd: asd[1],reverse=True)

    return labels,labels[0][0]


if __name__ == '__main__':

    learning_dataset=createDataset()
    testData={"老友记": [29, 10, 2, "?片"]}
    dataPoint=list(testData.values())[0][0:3]
    
    k=6
    labels,result=kNN(learning_dataset,dataPoint,k)
    print(labels,result,sep='\n')

在这里插入图片描述

结果为喜剧片!

2. 编写代码,实现对iris数据集的KNN算法分类及预测

要求:

(1)数据集划分为测试集占20%;
(2)n_neighbors=5;
(3)评价模型的准确率;
(4)使用模型预测未知种类的鸢尾花。
(待预测数据:X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]])

iris数据集有150组,每组4个数据。

第一步:引入所需库

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

第二步:划分测试集占20%

 x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=0)
test_size为0-1的数代表占百分之几
random_state为零随机数确定,每次结果都相同

第三步:n_neighbors=5

 KNeighborsClassifier(n_neighbors=5)

第四步:评价模型的准确率

KNN.fit(x_train, y_train)
# 训练集准确率
train_score = KNN.score(x_train, y_train)
# 测试集准确率
test_score = KNN.score(x_test, y_test)

第五步:使用模型预测未知种类的鸢尾花

#待预测数据:X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]]
 X1 = np.array([[1.5, 3, 5.8, 2.2], [6.2, 2.9, 4.3, 1.3]])
 # 进行预测
 prediction = KNN.predict(X1)
 # 种类名称
 k = iris.get("target_names")[prediction]

完整代码:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
if __name__ == '__main__':
    iris = load_iris()
    data = iris.get("data")
    target = iris.get("target")
    x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=0)
    KNN = KNeighborsClassifier(n_neighbors=5)
    KNN.fit(x_train, y_train)
    train_score = KNN.score(x_train, y_train)
    test_score = KNN.score(x_test, y_test)
    print("模型的准确率:", test_score)
    X1 = np.array([[1.5, 3, 5.8, 2.2], [6.2, 2.9, 4.3, 1.3]])
    prediction = KNN.predict(X1)
    k = iris.get("target_names")[prediction]
    print("第一朵花的种类为:", k[0])
    print("第二朵花的种类为:", k[1])

结果:
在这里插入图片描述

目录
相关文章
|
22天前
|
机器学习/深度学习 人工智能 安全
探索AI的未来:从机器学习到深度学习
【10月更文挑战第28天】本文将带你走进AI的世界,从机器学习的基本概念到深度学习的复杂应用,我们将一起探索AI的未来。你将了解到AI如何改变我们的生活,以及它在未来可能带来的影响。无论你是AI专家还是初学者,这篇文章都将为你提供新的视角和思考。让我们一起探索AI的奥秘,看看它将如何塑造我们的未来。
60 3
|
11天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
12天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
43 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
12天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
42 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
12天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
52 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之解释性AI与可解释性机器学习
随着人工智能技术的广泛应用,机器学习模型越来越多地被用于决策过程。然而,这些模型,尤其是深度学习模型,通常被视为“黑箱”,难以理解其背后的决策逻辑。解释性AI(Explainable AI, XAI)和可解释性机器学习(Interpretable Machine Learning, IML)旨在解决这个问题,使模型的决策过程透明、可信。
34 2
|
17天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
36 2
|
28天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI的魔法:机器学习如何改变我们的世界
【10月更文挑战第22天】在这篇文章中,我们将深入探讨机器学习的奥秘,揭示它是如何在我们的日常生活中扮演着越来越重要的角色。从简单的数据分类到复杂的预测模型,机器学习的应用已经渗透到各个领域。我们将通过实例和代码示例,展示机器学习的基本概念、工作原理以及它如何改变我们的生活。无论你是科技爱好者还是对AI充满好奇的初学者,这篇文章都将为你打开一扇通往未来的大门。
|
28天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
下一篇
无影云桌面