python机器学习---线性回归案例和KNN机器学习案例
散点图和KNN预测
一丶案例引入
# 城市气候与海洋的关系研究
# 导包
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
%matplotlib inline # 使用画图模块时,jupyter工具需要声明
from pylab import mpl # mpl 提供画图的包
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 导入数据
ferrara1 = pd.read_csv('./ferrara_150715.csv')
ferrara2 = pd.read_csv('./ferrara_250715.csv')
ferrara3 = pd.read_csv('./ferrara_270615.csv')
# 拼接数据,忽略索引
ferrara=pd.concat([ferrara1,ferrara2,ferrara3],ignore_index=True)
# 去除没用的列
faenza.head()
city_list=[ferrara,torino,mantova,milano,ravenna,asti,bologna,piacenza,cesena,faenza]
for city in city_list:
# 删除 没用的列,inplace:作用在源数据上
city.drop(labels='Unnamed: 0',axis=1,inplace=True)
# 显示最高温度于离海远近的关系(观察多个城市)
max_temp = [] #10个城市的最高温度
cities_dist = [] #10个城市距离海洋的距离
for city in city_list:
max_temp.append(city['temp'].max())
cities_dist.append(city['dist'].max())
# 在方程式中:
x:自变量
y:因变量
y = 5x + 4
自变量的变化会导致因变量的变化
# 画散点图, scatter(x,y,c):
# 注意: x是自变量, y是因变量. 距离是自变量,最高温度是因变量. rbyg是
plt.scatter(cities_dist,max_temp,c='rbyg')
plt.xlabel('距离')
plt.ylabel('最高温度')
plt.title('距离和最高温度之间的关系图')
二丶机器学习的概念
# 机器学习(ML)和人工智能之间的关系是什么?
机器学习是实现人工智能的一种技术手段
# 什么是算法模型(model或者m)?
特殊的对象。特殊之处就在于该对象内部集成了某一种还没有求出解的方程。
# 算法模型的作用?
实现预测:预测出一个未知的结果
实现分类:将一个未知分类的事务归类到已知的类群中
重点:算法模型中的方程的解就是预测或者分类的结果
#样本数据
作用:将样本数据带入到算法模型中让其内部的方程有解。至此算法模型就可以实现分类或者预测的功能。
训练模型:将样本数据带入到算法模型中让其内部的方程有解。只有训练好的算法模型才可以实现分类或者预测的功能!
组成部分:
特征数据:自变量
目标数据:因变量
#sk-learn库:封装了大量的算法模型
# 模型的分类:
有监督学习:如果模型需要的样本数据必须包含特征数据和目标数据
无监督学习:如果模型需要的样本只需要有特征数据
# 导入sklearn,建立线性回归算法模型对象
# 该模型内部封装的是一个线性方程:y = wx + b
### 1. 提取样本数据 (特征数据,目标数据)
feature = np.array(cities_dist) #特征数据
feature = feature.reshape(-1, 1) #二维形式的特征数据(reshape把数据变形,训练的数据必须是二维)
target = np.array(max_temp) #目标数据
### 2. 训练模型调用的方法是fit(X,y),y任意形式(维度)的目标数据,X表示的必须是二维的特征数据
#1.选择一个模型对象进行实例化
from sklearn.linear_model import LinearRegression
# 实例化一个 线性回归对象
linner = LinearRegression()
#2.训练模型(注意:训练模型的数据必须是二维)
linner.fit(feature,target) #X,y
#3.使用相关的评价指标来评价模型
linner.score(feature,target)
#4.实现预测
linner.predict([[222],[333]])
#### 3. 画出回归曲线
x = np.linspace(0,350,num=100) # x 生成100个随机数
y = linner.predict(x.reshape(-1,1))
# 画出散点图
plt.scatter(cities_dist,max_temp,c='rbyg')
plt.xlabel('距离')
plt.ylabel('最高温度')
plt.title('距离和最高温度之间的关系图')
#
plt.scatter(x,y)
三丶k-近邻算法(KNN)
k-近邻算法原理
# 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。
# 优点:精度高(计算距离)、对异常值不敏感(单纯根据距离进行分类,会忽略特殊情况)、无数据输入假定(不会对数据预先进行判定)。
# 缺点:时间复杂度高、空间复杂度高。
# 适用数据范围:数值型和标称型。
欧几里得距离(Euclidean Distance)
# 欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:
案例一:
需求:预测年收入是否大于50K美元
# 读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50
# 1. 读取数据
data = pd.read_csv('../data/adults.txt')
data.head()
# 2. 获取年龄、教育程度、职位、每周工作时间作为机器学习数据 获取薪水作为对应结果
feature = data[['age','education_num','occupation'
,'hours_per_week']]
target = data['salary']
# 3. knn中特征数据是需要参与运算的,所以要保证特征数据必须为数值型的数据
# 数据转换,将String类型数据转换为int
#### map方法,进行数据转换
dic = {}
# unique()方法保证数据唯一
occ_arr = feature['occupation'].unique()
# 生成 字符对应数字的 关系表
for i in range(occ_arr.size):
dic[occ_arr[i]] = i
# 数值替换字符串
feature['occupation'] = feature['occupation'].map(dic)
# 4. 切片:训练数据和预测数据
# 查看数据的形状 (训练的数据必须是二维数据)
feature.shape
#训练数据
x_train = feature[:32500]
y_train = target[:32500]
#测试数据
x_test = feature[32500:]
y_test = target[32500:]
# 5. 生成算法
from sklearn.neighbors import KNeighborsClassifier
# 实例化一个 knn对象,
# 参数:n_neighbors可调,调到最终预测的是最好的结果.
knn = KNeighborsClassifier(n_neighbors=10)
# fit() 训练函数, (训练数据,训练数据的结果)
knn.fit(x_train,y_train)
# 对训练的模型进行评分 (测试数据,测试数据的结果)
knn.score(x_test,y_test)
# 6.预测数据
print('真实的分类结果:',np.array(y_test))
print('模型的分类结果:',knn.predict(x_test))
python机器学习---线性回归案例和KNN机器学习案例的更多相关文章
- 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法
(一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...
- 零起点PYTHON足彩大数据与机器学习实盘分析
零起点PYTHON足彩大数据与机器学习实盘分析 第1章 足彩与数据分析 1 1.1 “阿尔法狗”与足彩 1 1.2 案例1-1:可怕的英国足球 3 1.3 关于足彩的几个误区 7 1.4 足彩·大事件 ...
- 机器学习-线性回归LinearRegression
概述 今天要说一下机器学习中大多数书籍第一个讲的(有的可能是KNN)模型-线性回归.说起线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务.那什么是回归任务和分类任务呢?简单的来说 ...
- 机器学习经典算法之KNN
一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...
- SVM(支持向量机)与统计机器学习 & 也说一下KNN算法
因为SVM和统计机器学习内容很多,所以从 http://www.cnblogs.com/charlesblc/p/6188562.html 这篇文章里面分出来,单独写. 为什么说SVM和统计学关系很大 ...
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
- python模块之HTMLParser之穆雪峰的案例(理解其用法原理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...
- C / C ++ 基于梯度下降法的线性回归法(适用于机器学习)
写在前面的话: 在第一学期做项目的时候用到过相应的知识,觉得挺有趣的,就记录整理了下来,基于C/C++语言 原贴地址:https://helloacm.com/cc-linear-regression ...
- python——flask常见接口开发(简单案例)
python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...
随机推荐
- vue中webpack的配置理解
当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面 (环境变量及其基本变量的配置) var path = require('path') ...
- computed和watch的用法和区别
computed可以监听v-model(data)中的值,只要值发生变化 他就会重新去计算 computed必须是要有一个返回值的哦 <div id="app"> &l ...
- 第17节-BLE安全管理概述
安全管理是BLE中最复杂的内容,涉及LL层.SM层.GAP层 一.妈妈的担心 1. 白名单: 妈妈说,你只能跟A.B.C这3个好孩子玩:他们打电话给你,你才可以出去玩. A.B.C三人,就在妈妈的“白 ...
- python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题
1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...
- zz扔掉anchor!真正的CenterNet——Objects as Points论文解读
首发于深度学习那些事 已关注写文章 扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 关注他 JustDoIT 等 ...
- VIJOS-P1078 松鼠吃果子
洛谷 P2069 松鼠吃果子 https://www.luogu.org/problemnew/show/P2069 JDOJ 1256: VIJOS-P1078 松鼠吃果子 https://neoo ...
- 使用CSS来渲染HTML的表单元素
效果: 实现: <!DOCTYPE html> <html> <head> <title>使用CSS来渲染HTML的表单元素</title> ...
- 前端性能优化&&网站性能优化
加载优化:1.合并css.JavaScript 2.合并小图片,使用精灵图 3.缓存一切可缓存的资源 4.使用长cache 5.使用外联式引用css.JavaScript 6.压缩HTML.CSS.J ...
- Note | PyTorch官方教程学习笔记
目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...
- 获取oracle中某张表的各个字段名称
select column_name from all_tab_columns where table_name='AT2_SSIS_CHNDB_CLIENT_INFO'