散点图和KNN预测

一丶案例引入

  1. # 城市气候与海洋的关系研究
  2. # 导包
  3. import numpy as np
  4. import pandas as pd
  5. from pandas import Series,DataFrame
  6. import matplotlib.pyplot as plt
  7. %matplotlib inline # 使用画图模块时,jupyter工具需要声明
  8. from pylab import mpl # mpl 提供画图的包
  9. mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
  10. mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
  11. # 导入数据
  12. ferrara1 = pd.read_csv('./ferrara_150715.csv')
  13. ferrara2 = pd.read_csv('./ferrara_250715.csv')
  14. ferrara3 = pd.read_csv('./ferrara_270615.csv')
  15. # 拼接数据,忽略索引
  16. ferrara=pd.concat([ferrara1,ferrara2,ferrara3],ignore_index=True)
  17. # 去除没用的列
  18. faenza.head()
  19. city_list=[ferrara,torino,mantova,milano,ravenna,asti,bologna,piacenza,cesena,faenza]
  20. for city in city_list:
  21. # 删除 没用的列,inplace:作用在源数据上
  22. city.drop(labels='Unnamed: 0',axis=1,inplace=True)
  23. # 显示最高温度于离海远近的关系(观察多个城市)
  24. max_temp = [] #10个城市的最高温度
  25. cities_dist = [] #10个城市距离海洋的距离
  26. for city in city_list:
  27. max_temp.append(city['temp'].max())
  28. cities_dist.append(city['dist'].max())
  1. # 在方程式中:
  2. x:自变量
  3. y:因变量
  4. y = 5x + 4
  5. 自变量的变化会导致因变量的变化
  1. # 画散点图, scatter(x,y,c):
  2. # 注意: x是自变量, y是因变量. 距离是自变量,最高温度是因变量. rbyg是
  3. plt.scatter(cities_dist,max_temp,c='rbyg')
  4. plt.xlabel('距离')
  5. plt.ylabel('最高温度')
  6. plt.title('距离和最高温度之间的关系图')

二丶机器学习的概念

  1. # 机器学习(ML)和人工智能之间的关系是什么?
  2. 机器学习是实现人工智能的一种技术手段
  3. # 什么是算法模型(model或者m)?
  4. 特殊的对象。特殊之处就在于该对象内部集成了某一种还没有求出解的方程。
  5. # 算法模型的作用?
  6. 实现预测:预测出一个未知的结果
  7. 实现分类:将一个未知分类的事务归类到已知的类群中
  8. 重点:算法模型中的方程的解就是预测或者分类的结果
  9. #样本数据
  10. 作用:将样本数据带入到算法模型中让其内部的方程有解。至此算法模型就可以实现分类或者预测的功能。
  11. 训练模型:将样本数据带入到算法模型中让其内部的方程有解。只有训练好的算法模型才可以实现分类或者预测的功能!
  12. 组成部分:
  13. 特征数据:自变量
  14. 目标数据:因变量
  15. #sk-learn库:封装了大量的算法模型
  16. # 模型的分类:
  17. 有监督学习:如果模型需要的样本数据必须包含特征数据和目标数据
  18. 无监督学习:如果模型需要的样本只需要有特征数据
  1. # 导入sklearn,建立线性回归算法模型对象
  2. # 该模型内部封装的是一个线性方程:y = wx + b
  3. ### 1. 提取样本数据 (特征数据,目标数据)
  4. feature = np.array(cities_dist) #特征数据
  5. feature = feature.reshape(-1, 1) #二维形式的特征数据(reshape把数据变形,训练的数据必须是二维)
  6. target = np.array(max_temp) #目标数据
  7. ### 2. 训练模型调用的方法是fit(X,y),y任意形式(维度)的目标数据,X表示的必须是二维的特征数据
  8. #1.选择一个模型对象进行实例化
  9. from sklearn.linear_model import LinearRegression
  10. # 实例化一个 线性回归对象
  11. linner = LinearRegression()
  12. #2.训练模型(注意:训练模型的数据必须是二维)
  13. linner.fit(feature,target) #X,y
  14. #3.使用相关的评价指标来评价模型
  15. linner.score(feature,target)
  16. #4.实现预测
  17. linner.predict([[222],[333]])
  18. #### 3. 画出回归曲线
  19. x = np.linspace(0,350,num=100) # x 生成100个随机数
  20. y = linner.predict(x.reshape(-1,1))
  21. # 画出散点图
  22. plt.scatter(cities_dist,max_temp,c='rbyg')
  23. plt.xlabel('距离')
  24. plt.ylabel('最高温度')
  25. plt.title('距离和最高温度之间的关系图')
  26. #
  27. plt.scatter(x,y)

三丶k-近邻算法(KNN)

k-近邻算法原理

  1. # 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。
  2. # 优点:精度高(计算距离)、对异常值不敏感(单纯根据距离进行分类,会忽略特殊情况)、无数据输入假定(不会对数据预先进行判定)。
  3. # 缺点:时间复杂度高、空间复杂度高。
  4. # 适用数据范围:数值型和标称型。

欧几里得距离(Euclidean Distance)

  1. # 欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:

案例一:

需求:预测年收入是否大于50K美元

  1. # 读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50
  2. # 1. 读取数据
  3. data = pd.read_csv('../data/adults.txt')
  4. data.head()
  5. # 2. 获取年龄、教育程度、职位、每周工作时间作为机器学习数据 获取薪水作为对应结果
  6. feature = data[['age','education_num','occupation'
  7. ,'hours_per_week']]
  8. target = data['salary']
  9. # 3. knn中特征数据是需要参与运算的,所以要保证特征数据必须为数值型的数据
  10. # 数据转换,将String类型数据转换为int
  11. #### map方法,进行数据转换
  12. dic = {}
  13. # unique()方法保证数据唯一
  14. occ_arr = feature['occupation'].unique()
  15. # 生成 字符对应数字的 关系表
  16. for i in range(occ_arr.size):
  17. dic[occ_arr[i]] = i
  18. # 数值替换字符串
  19. feature['occupation'] = feature['occupation'].map(dic)
  20. # 4. 切片:训练数据和预测数据
  21. # 查看数据的形状 (训练的数据必须是二维数据)
  22. feature.shape
  23. #训练数据
  24. x_train = feature[:32500]
  25. y_train = target[:32500]
  26. #测试数据
  27. x_test = feature[32500:]
  28. y_test = target[32500:]
  29. # 5. 生成算法
  30. from sklearn.neighbors import KNeighborsClassifier
  31. # 实例化一个 knn对象,
  32. # 参数:n_neighbors可调,调到最终预测的是最好的结果.
  33. knn = KNeighborsClassifier(n_neighbors=10)
  34. # fit() 训练函数, (训练数据,训练数据的结果)
  35. knn.fit(x_train,y_train)
  36. # 对训练的模型进行评分 (测试数据,测试数据的结果)
  37. knn.score(x_test,y_test)
  38. # 6.预测数据
  39. print('真实的分类结果:',np.array(y_test))
  40. print('模型的分类结果:',knn.predict(x_test))

python机器学习---线性回归案例和KNN机器学习案例的更多相关文章

  1. 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

    (一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...

  2. 零起点PYTHON足彩大数据与机器学习实盘分析

    零起点PYTHON足彩大数据与机器学习实盘分析 第1章 足彩与数据分析 1 1.1 “阿尔法狗”与足彩 1 1.2 案例1-1:可怕的英国足球 3 1.3 关于足彩的几个误区 7 1.4 足彩·大事件 ...

  3. 机器学习-线性回归LinearRegression

    概述 今天要说一下机器学习中大多数书籍第一个讲的(有的可能是KNN)模型-线性回归.说起线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务.那什么是回归任务和分类任务呢?简单的来说 ...

  4. 机器学习经典算法之KNN

    一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...

  5. SVM(支持向量机)与统计机器学习 & 也说一下KNN算法

    因为SVM和统计机器学习内容很多,所以从 http://www.cnblogs.com/charlesblc/p/6188562.html 这篇文章里面分出来,单独写. 为什么说SVM和统计学关系很大 ...

  6. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  7. python模块之HTMLParser之穆雪峰的案例(理解其用法原理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...

  8. C / C ++ 基于梯度下降法的线性回归法(适用于机器学习)

    写在前面的话: 在第一学期做项目的时候用到过相应的知识,觉得挺有趣的,就记录整理了下来,基于C/C++语言 原贴地址:https://helloacm.com/cc-linear-regression ...

  9. python——flask常见接口开发(简单案例)

    python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...

随机推荐

  1. Ubuntu18.04.2下安装 RTX2080 Nvidia显卡驱动

    转载请注明出处:BooTurbo  https://www.cnblogs.com/booturbo/p/11261903.html 不久前入手了蓝天P870TM1G准系统,配置如下: 1. Z370 ...

  2. 第13节-BLE协议L2CAP层

    学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Proto ...

  3. Linux 找文件

    最简单的可以使用 find find . -name "libxxx.so" 还可以使用 locate libxxx.so

  4. 201871010128-杨丽霞《面向对象程序设计(java)》第十三周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第十三周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  5. UiPath:Delay延迟执行,解决UiPath自动输入值不完整问题

    学习过程中出现点击按钮后,由于网页弹出框显示速度慢,造成输入值遗漏或者根本就没有输入问题. 查阅了一下,目前解决方法是在点击按钮后加一段延迟时间,等待他显示完整在输入值.如图 时间格式以秒为单位 00 ...

  6. day22_7.26面向对象之封装(接口与抽象)

    一.封装. 封装就是将丑陋复杂的隐式的细节隐藏到内部,对外提供简单的使用接口. 对外隐藏内部实现细节,并提供访问的接口.对内使用self操作. 二.为什么要封装? 对于一个计算机来说,不可能不使用机箱 ...

  7. day5_7.3 数据类型的各种函数操作

    昨日补充: 1.在代码的编写中,总会有一些分支编写不出来,为了不影响整个系统的跑动,可以使用pass关键字进行跳过.如 count=0 while count<10: if count<5 ...

  8. SQL-select常用语句

    1.全套装备 select [select选项] 字段列表[字段别名]/* from 数据源[where 条件子句] [group by条件子句] [having 子句] [order by 子句] ...

  9. react服务端渲染框架

    客户端渲染 加载一个空的html页面,然后请求一个打包的js文件,然后再客户端执行这个js文件 动态生成html内容然后插入到DOM元素上,在源代码查询中也只能看到空的html文档 没有任何其他内容 ...

  10. .NET开发中 springMVC+NHibernate注入失败的几个常见错误

    1.spring程序集没引用,这个一定要引用,还有就是如果有Redis,还需引用ServiceStack 2.webConfig没配置对,这个没对一般会报错 3.也许Global.asax文件没引入全 ...