机器学习1一knn算法

1.基础知识点介绍

曼哈顿距离一般是比欧式距离长的除非在一维空间

拐弯的就是曼哈顿距离

Knn查看前5行数据head(),info看空非空

查看特征对应的类型

Head()默认前5行,head(3)就是前3行数据

Unique()可以查看分类后的结果

csv的数据应该是逗号分隔,但也不确定,要去查看数据不要只看拓展名要点进去看一下

这个删掉没有把原数据删掉

如果把原数据删掉加上inplace=true

#练习1 导入数据分析三剑客
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#导入KNN算法
#sklearn机器学习库,KNeighborsClassifier :KNN分类器
from sklearn.neighbors import KNeighborsClassifier### 1. k-近邻算法原理
#简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类(K-Nearest Neighbor,KNN)
##### 工作原理 **欧几里得距离(Euclidean Distance)**欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。
knn优缺点#- 优点:精度高、对异常值不敏感。
#- 缺点:时间复杂度高、空间复杂度高。
#### 2. 在scikit-learn库中使用k-近邻算法
#- 分类问题:from sklearn.neighbors import KNeighborsClassifier#- 回归问题:from sklearn.neighbors import KNeighborsRegressor
#导入电影数据
movie=pd.read_excel('../data/movies.xlsx',sheet_name=1)
movie
#中文不可以训练,电影名称从业务的角度也不能拿来训练
data=movie[['武大镜头','接吻镜头']].copy()
data #必须是二维数据
# target (label) 标签,标记,目标结果
target=movie.分类情况
target
data.shape,target.shape
# 使用KNN算法# 1. 创建KNN对象
# n_neighbors=5 : K=5,会找最近的5个近邻
# p=2:默认值,表示使用欧式距离,p=1表示曼哈顿距离
knn=KNeighborsClassifier(n_neighbors=5,p=2)
knn
# 2. 训练 : 训练历史数据
#  数据: 
#     训练数据: 用来训练
#     测试数据:或验证数据,用来测试或验证模型的好坏# X :必须是二维数据
# y :结果,一般是一维
knn.fit(X=data,y=target)
data
# 3. 预测新数据
# 提供测试数据
X_test=np.arry([[50, 1], [1, 20], [30, 1], [2, 10], [20, 10]])
X_test=pd.DataFrame(X_test,columns=data.columns)
y_test=np.array(['动作片', '爱情片', '动作片', '爱情片', '动作片'])
# 预测:predict
y_pred=knn.predict(X_test)
y_pred
# 4. 计算得分: 准确率
knn.score(X_test,y_test)
总结:# 数据
#     data, target : 一般表示全部数据#  训练数据
#   X_train : 训练集中的数据
#   y_train :训练集中的数据对应的结果
#  
# 预测数据
#   X_test : 测试集中的数据
#   y_test : 测试集中的数据对应的真实结果
#   y_pred : 测试集中的数据对应的预测结果

#from sklearn.datasets:提供现成的数据集,主要用来学习和测试#导入数据
import pandas as pd 
import numpy as np 
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier 
iris=load_iris()
iris
data=iris['data']
target=iris['target']
target_names=iris['target_names']
feature_names=iris['feature_names']
data.shape,target.shape
target
target_names
feature_names
pd.DataFrame(data,columns=feature_names)
#拆分数据集
from sklearn.model_selection import train_test_split# test_size 有2种写法:
#   1. int整数,那么就表示使用这么多的数据作为测试数据
#   2. float小数,0-1之间,测试数据占所有数据的比重, 比如:0.2 = 150*20% = 20# 训练数据: X_train, y_train
# 测试数据: X_test, y_test
x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
display(x_train.shape,x_test.shape)
#使用knn算法knn = KNeighborsClassifier()
#1.创建knn
knn=KNeighborsClassifier()
#2.训练
knn.fit(x_train,y_train)
#3.预测
y_pred=knn.predict(x_test)
y_pred
#得分
knn.score(x_test,y_test)
#4. 拆分数据集:训练数据和预测数据
#    - train_test_split
import numpy as np
import pandas as pd
#import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
x_train.shape,x_test.shape
#使用knn算法
knn=KNeighborsClassifier()
knn.fit(x_train,y_train)
#预测
knn = KNeighborsClassifier()
knn.fit(x_train,y_train)
#预测
knn.predict(x_test)
#得分
knn.score(x_test,y_test)
#6. 保存训练模型  
#    - import joblib
#    - 保存模型: joblib.dump(knn, 'knn.plk')
#   - 导入模型: joblib.load('knn.plk')
import joblib
joblib.dump(knn,'knn.plk')
#导入模型
new_knn=joblib.load('knn.plk')
new_knn
#预测
new_knn.predict(x_test)

#### 3、癌症预测
#- 读取cancer.csv文件
#- 删除列: 'ID'
#- Diagnosis 是target
#- 使用train_test_split
#- 使用KNN训练,并预测
#- 交叉表查看结果pd.crosstab( )
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
cancer=pd.read_table('../data/cancer.csv')
cancer.shape
cancer.head()
cancer.drop(columns='ID',inplace=True)
cancer.head(3)
data=cancer.iloc[:,1:].copy()
target.unique()
x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
#knn
knn=KNeighborsClassifier()
knn.fit(x_train,y_train)
#预测
y_pred=knn.predict(x_test)
y_pred
#得分
knn.score(x_test,y_test)
pd.crosstab(index=y_pred, #预测结果columns=y_test,rownames=['预测'],colnames=['真实'],margins=True
)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460241.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18:蜂鸣器

蜂鸣器 1、蜂鸣器的介绍2、编程让蜂鸣器响起来3、通过定时控制蜂鸣器4、蜂鸣器发出滴滴声(间歇性鸣叫) 1、蜂鸣器的介绍 蜂鸣器内部其实是2个金属片,当一个金属片接正电,一个金属片接负电时,2个金属片将合拢&#xff…

多 split 窗口 in Gtkmm4

文章目录 效果预览实现概要源代码 效果预览 实现概要 使用Gtk::Paned虽然 Paned 只能装两个子控件, 但是我可以嵌套 paned1 装 box1 和 box2 paned2 装 paned1 和 box3 源代码 #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public:ExampleWindow()…

蓝桥杯(Web大学组)2022国赛真题:水果消消乐

思路&#xff1a; 记录点击次数&#xff0c;点击次数为1时&#xff0c;记录点击下标&#xff08;用于隐藏or消除&#xff09;、点击种类&#xff0c;点击次数为2时&#xff0c;判断该下标所对应种类与第一次是否相同 相同&#xff1a;两个都visibility:hidden &#xff08;占…

汽车控制臂的拓扑优化

前言 本示例使用优化模块通过减小控制臂的体积同时最大化其刚度来优化汽车控制臂的设计。 本页讨论 前言应用描述Abaqus建模方法和仿真技术文件参考 应用描述 本例说明了汽车控制臂的拓扑优化&#xff0c;在拓扑优化过程中&#xff0c;修改设计区域中单元的材料特性(有效地从…

第62讲商品搜索动态实现以及性能优化

商品搜索后端动态获取数据 后端动态获取数据&#xff1a; /*** 商品搜索* param q* return*/GetMapping("/search")public R search(String q){List<Product> productList productService.list(new QueryWrapper<Product>().like("name", q)…

四.Linux实用操作 8-11.网络请求和下载.端口进程管理主机状态监控

目录 四.Linux实用操作 8.网络请求和下载 ping命令 wget命令--下载网络文件 curl命令--发送网络请求/下载文件 四.Linux实用操作 9.端口 端口 端口&#xff08;虚拟&#xff09; 端口&#xff08;号&#xff09; 查看端口占用 四.Linux实用操作 10.进程管理 查看进程…

位运算01 插入[C++]

图源&#xff1a;文心一言 上机题目练习整理&#xff0c;位运算&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 网页版目录在页面的右上角↗~&#x1f95d;&#x1f95d; 第1版&#xff1a;在力扣新手村刷题的记录~&#x1f9e9;&#x1f9e9; 编辑&#xff1a;梅…

C语言特殊指针

1 野指针 概念&#xff1a;指向一块未知区域的指针&#xff0c;被称为野指针。野指针是危险的。 危害&#xff1a; 引用野指针&#xff0c;相当于访问了非法的内存&#xff0c;常常会导致段错误&#xff08;segmentation fault&#xff09;引用野指针&#xff0c;可能会破坏系…

恒流源方案对比

1、双运放恒流源 2、运放三极管放大电路组成的恒流源 5A 3、运放三极管组成的恒流源 200uA 4、运放MOS管组成的恒流源 100mA 5、电源模块并联输出100A恒流

百面嵌入式专栏(面试题)C语言面试题22道

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍C语言相关面试题 。 宏定义是在编译的哪个阶段被处理的?答案:宏定义是在编译预处理阶段被处理的。 解读:编译预处理:头文件包含、宏替换、条件编译、去除注释、添加行号。 写一个“标准”宏MIN,这个…

极限的反问题【高数笔记】

1. 什么是极限反问题&#xff1f; 2. 极限反问题分为几类&#xff1f; 3. 每一类极限反问题的具体做法是什么&#xff1f; 4. 每一类极限反问题具体做法是否有前提条件&#xff1f; 5. 例题&#xff1f;

CDN相关和HTTP代理

CDN相关和HTTP代理 参考&#xff1a; 《透视 HTTP 协议》——chrono 把这两个放在一起是因为容易搞混&#xff0c;我一开始总以为CDN就是HTTP代理&#xff0c;但是看了极客时间里透视HTTP协议的讲解&#xff0c;感觉又不仅于此&#xff0c;于是专门写下来。 先说结论&#xf…