数学建模:2.监督学习--分类分析- KNN最邻近分类算法

1.分类分析

分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法。

分类问题的应用场景:分类问题是用于将事物打上一个标签,通常结果为离散值。例如判断一副图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上。

本文主要讲基本的分类方法 ----- KNN最邻近分类算法 

KNN最邻近分类算法 ,简称KNN,最简单的机器学习算法之一。

  核心逻辑:在距离空间里,如果一个样本的最接近的K个邻居里,绝大多数属于某个类别,则该样本也属于这个类别。

2. KNN最邻近分类的python实现方法

最邻近分类的python实现方法

在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别

电影分类 / 植物分类

2.1电影分类

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
#  案例一:电影数据分类

from sklearn import neighbors  # 导入KNN分类模块
import warnings
warnings.filterwarnings(‘ignore‘)
# 不发出警告

data = pd.DataFrame({‘name‘:[‘北京遇上西雅图‘,‘喜欢你‘,‘疯狂动物城‘,‘战狼2‘,‘力王‘,‘敢死队‘],
                  ‘fight‘:[3,2,1,101,99,98],
                  ‘kiss‘:[104,100,81,10,5,2],
                  ‘type‘:[‘Romance‘,‘Romance‘,‘Romance‘,‘Action‘,‘Action‘,‘Action‘]})
print(data)
print(‘-------‘)
#  创建数据

plt.scatter(data[data[‘type‘] == ‘Romance‘][‘fight‘],data[data[‘type‘] == ‘Romance‘][‘kiss‘],color = ‘r‘,marker = ‘o‘,label = ‘Romance‘)
plt.scatter(data[data[‘type‘] == ‘Action‘][‘fight‘],data[data[‘type‘] == ‘Action‘][‘kiss‘],color = ‘g‘,marker = ‘o‘,label = ‘Action‘)
plt.grid()
plt.legend()

knn = neighbors.KNeighborsClassifier()   # 取得knn分类器
knn.fit(data[[‘fight‘,‘kiss‘]], data[‘type‘])

print(‘预测电影类型为:‘, knn.predict([18, 90]))
# 加载数据,构建KNN分类模型
# 预测未知数据

plt.scatter(18,90,color = ‘r‘,marker = ‘x‘,label = ‘Romance‘)
plt.ylabel(‘kiss‘)
plt.xlabel(‘fight‘)
plt.text(18,90,‘《你的名字》‘,color = ‘r‘)
# 绘制图表

data2 = pd.DataFrame(np.random.randn(100, 2)*50, columns = [‘fight‘, ‘kiss‘])
data2[‘typetest‘] = knn.predict(data2)

plt.scatter(data[data[‘type‘] == ‘Romance‘][‘fight‘],data[data[‘type‘] == ‘Romance‘][‘kiss‘],color = ‘r‘,marker = ‘o‘,label = ‘Romance‘)
plt.scatter(data[data[‘type‘] == ‘Action‘][‘fight‘],data[data[‘type‘] == ‘Action‘][‘kiss‘],color = ‘g‘,marker = ‘o‘,label = ‘Action‘)
plt.grid()
plt.legend() #做一个可视化
plt.scatter(data2[data2[‘typetest‘] == ‘Romance‘][‘fight‘],data2[data2[‘typetest‘] == ‘Romance‘][‘kiss‘],color = ‘r‘,marker = ‘x‘,label = ‘Romance‘)
plt.scatter(data2[data2[‘typetest‘] == ‘Action‘][‘fight‘],data2[data2[‘typetest‘] == ‘Action‘][‘kiss‘],color = ‘g‘,marker = ‘x‘,label = ‘Action‘)
# plt.legend()
plt.ylabel(‘kiss‘)
plt.xlabel(‘fight‘)
# 绘制图表
data2.head()

2.2植物分类

# 案例二:植物分类

from sklearn import datasets
iris = datasets.load_iris()
print(iris.keys())
print(‘数据长度为:%i条‘ % len(iris[‘data‘]))
# 导入数据

print(iris.feature_names)
print(iris.target_names)
#print(iris.target)
print(iris.data[:5])
# 150个实例数据
# feature_names - 特征分类:萼片长度,萼片宽度,花瓣长度,花瓣宽度  → sepal length, sepal width, petal length, petal width
# 目标类别:Iris setosa, Iris versicolor, Iris virginica.
data = pd.DataFrame(iris.data, columns = iris.feature_names)
data[‘target‘] = iris.target
iris.target
data.head()

knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data, iris.target) #构建一个分类模型

prt_data = knn.predict([0.2, 0.1, 0.3, 0.4]) #array([0])
prt_data
ty = pd.DataFrame({‘target‘:[0, 1, 2],
                  ‘target_names‘:iris.target_names})

iris.target

df = pd.merge(data, ty, on = ‘target‘)

df.head()

knn = neighbors.KNeighborsClassifier()
# knn.fit(iris.data, iris.target) #构建一个分类模型
knn.fit(iris.data, df[‘target_names‘]) #监督学习一定要有它的特征量和目标值
prt_data = knn.predict([0.2, 0.1, 0.3, 0.4]) #做预测
prt_data

原文地址:https://www.cnblogs.com/shengyang17/p/9655737.html

时间: 2024-11-05 13:03:43

数学建模:2.监督学习--分类分析- KNN最邻近分类算法的相关文章

培养高职学生数学建模思想的途径

数学是学生从小学就开始学习的一门重要课程,在高职阶段仍然是理工科专业的一门重要基础课程.但是,当前,很多数学教学往往思想不够明确,不能准确的定位数学教学的目标.根据高职教育多年来的经验,笔者认为高职阶段开设数学课的目标应当定位到数学建模思想的培养,而不只是单纯的学会工式,用工式算题. 毕竟我们培养的学生不是数学家,数学对于他们来说是一种解决问题的工具.如果学生通过高职阶段的数学学习能够在今后的工作中,以数学建模思想解决实际问题,那么才是数学真的在他的工作与生活中起到作用了,也是数学教学的成功所在

【数学建模】创意平板折叠桌的模型分析与优化设计

? ? 创意平板折叠桌的模型分析与优化设计 魏淙铭 陈星曼 田桃 ? 摘要: 本题要求设计创意折叠桌,问题一给定了具体的长方形平板尺寸.桌高等设计参数求折叠桌的动态变化过程和桌脚边缘线的数学描述,问题二中任意给定桌高和桌面直径求折叠桌的最优设计参数,问题三则要求根据客户提供的桌面边缘线和桌脚边缘线的大致形状给出一款能够确定最优设计参数的软件的数学模型. 本题中,我们以折叠桌桌面中心为圆心,建立空间坐标系求解数学模型. 对于问题一,我们通过使用切片法降低维数来确定桌腿长度.开槽的长度等设计参数,并

数学建模学习笔记(第五章:6个动态模型-微分方程的建立与分析)

第五章:动态模型(微分方程建模) ·  预报与决策类型 ·  描述对象特征随时间或空间的演变过程: ·  分析对象特征的变化规律: ·  预报对象特征的未来特征: ·  研究控制对象特征的手段等. 这类题,要求的是一种趋势,描述一种变化过程,也可以称为预测.(属于动态) 1.    传染病模型 a)      问题描述:描述产染病的传播过程:分析受感染人数的变化规律:预报传染病高潮到来的时刻:预防传染病蔓延的手段:按照传播过程的一般规律,用机理分析方法建立模型:之后使用测试分析,确定最好的模型.

关于数学建模——入门

数学建模的概念:系统的描述某种本质特征的数学表达式 分类:初等/几何/图论/组合/微分方程/线性规划模型/非线性规划模型/目标规划模型/统计回归模型等... 步骤:建立.求解.分析.检验 Notice:数学建模没有唯一正确的答案,评价模型优劣的标准是实践. Model+Algorithm+Program=Map(映射) 数学建模论文的结构: 1.title: 2.summary:3.restatement of the problem(问题引言):4.analysis of the proble

数学建模竞赛题目

建模意义 思考方法 数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象.简化建立能近似刻画并"解决"实际问题的一种强有力的数学手段. 数学建模就是用数学语言描述实际现象的过程.这里的实际现象既包涵具体的自然现象比如自由落体现象,也包含抽象的现象比如顾客对某种商品所取的价值倾向.这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释实际现象等内容. 我们也可以这样直观地理解这个概念:数学建模是一个让纯粹数学家(指只研究数学而不管数学在实际中的应用的数学家)变成物理

数学建模常用的十大算法

数学建模常用的十大算法==转 (2017-07-16 11:26:14) 转载▼ 1. 蒙特卡罗算法.该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法. 2. 数据拟合.参数估计.插值等数据处理算法.比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具. 3. 线性规划.整数规划.多元规划.二次规划等规划类算法.建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算

数学建模的 基本方法

数学建模的基本方法: 1.机理分析: 对客观事物特性的认识,能够总结实际问题的内部机理的数量规律,如物理规律.几何规律等又称为白箱模型. 2.测试分析 对量测数据的统计分析,找到与数据拟合最好的模型,对象比较复杂,分析不清其内部机理,但是拥有足够多的实验数据(类似机器学习,找最佳模型),又称黑箱模型. 3.二者结合 机理分析建立模型结构,测试分析确定模型参数.(机器学习中的监督学习) 机理分析主要由实例研究来学习,建模主要指机理分析

2015 数学建模竞赛 入门与提高 读书笔记

<数学建模竞赛入门与提高> 第1章:数学建模概述 近半个多世纪以来,数学已经走进了各大领域,而与其他学科相结合形成交叉学科,首要的关键一步就是建立研究对象的数学模型,并加以计算求解,数学建模和计算机技术在知识经济时代的作用可谓是如虎添翼. 1.1  初入门径--认识数学模型与数学建模 数学建模就是用数学语言描述实际现象的过程,这里的实际现象包含具体的自然现象,也包含抽象的比如顾客对某种商品所取的价值倾向.这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释评价实际现象等内容. 数

数学建模算法概括

目录 数学模型按数学方法分类 数学建模十大算法 建模思想 预测与预报 评价与决策 分类与判别 关联与因果 优化与控制 数学模型按数学方法分类 几何模型(球面积分,曲面积分) 分形理论(常用) 图论模型(优化类,规划类,决策类问题) 有一类线性规划类问题可用图论模型解决,最短路径 → 时间最短 or 路径最短 微分方程模型(预测人口增长,传热导热问题) 概率问题(彩票) 最优控制模型(药物疗效) 规划论模型(投资问题) 马氏链模型(概率模型) 前后不关联的概率模型 数学建模十大算法 蒙特卡罗算法