- #
- import numpy as np
- import pandas as pd
- from pandas import Series,DataFrame
- import matplotlib.pyplot as plt
- from pylab import mpl
- mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
- mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
导入数据各个海滨城市数据 --
- # 去除没用的列
- city_list = [ferrara,torino,mantova,milano,ravenna,asti,bologna,piacenza,cesena,faenza]
- for city in city_list:
- city.drop('Unnamed: 0',axis=1,inplace=True)
- # 显示最高温度于离海远近的关系 (观察多个城市)
- city_max_temp = [] #城市
- city_dist = [] #距离
- for city in city_list:
- temp = city['temp'].max()
- dist = city['dist'].max()
- city_max_temp.append(temp)
- city_dist.append(dist)
- plt.scatter(city_dist,city_max_temp) #x 自变量 y 因变量
- plt.xlabel('距离')
- plt.ylabel('最高温度')
- plt.title('最高温度额距离之间的关系')
观察发现, 离海近的可以形成一条直线, 离海远的也能形成一条直线.
- 分别以 100 公里和 50 公里为分界点, 划分为离海近和离海远的两组数据 (近海: 小于 100 远海: 大于 50)
- # 数据转存到 numpy 中
- city_dist = np.array(city_dist) #任意维度的数组
- city_max_temp = np.array(city_max_temp)
- # 加条件 判断
- condition = city_dist < 100 #True False 布尔值
- near_city_dist = city_dist[condition] #索引 只拿 True 对应的值
- near_city_temp = city_max_temp[condition] #索引
- # 下面绘图
- plt.scatter(near_city_dist,near_city_temp) #x 自变量 y 因变量
- plt.xlabel('近海距离')
- plt.ylabel('近海最高温度')
- plt.title('近海城市最高温度额距离之间的关系')
- # sklearn
机器学习:
算法模型 -- 特殊对象. 内部已经帮我们集成或者封装好一个某一种算法或者某一种方程 (还没有解的方程)
样本数据 -- 样本对象的数据 帮助方程求出解
特征数据 - 自变量
目标数据 - 因变量
模型分类
有监督学习 样本数据必须包含特征数据和目标数据
- 线性回归算法模型
无监督学习 只包含特征数据
半监督学习 前期训练 后期预测 (少用)
算法模型的作用 --
预测未知
分类
- # 特征数据
- feature = near_city_dist.reshape(-1,1)
- # 目标数据
- target = near_city_temp
- print('真实值',target)
- print('预测值',linner.predict(feature))
score 算法
- # 导入 sklearn 建立线性回归算法模型对象
- from sklearn.linear_model import LinearRegression #线性回归 有监督学习
- linner = LinearRegression() #实例化 s
- # 求解 (训练模型): 需要将样本数据 (特征, 目标) 带入到模型对象中
- linner.fit(near_city_dist.reshape(-1,1),near_city_temp) #X 特征数据 只能 2 维 y: 目标 reshape(行 列)
- y = linner.predict([[81],[90]]) #调用方程 (X)
- linner.score(near_city_dist.reshape(-1,1),near_city_temp) #计算模型分数
- # 绘制直线 (是由点组成)
- x = np.linspace(0,80,100)
- y = linner.predict(x.reshape(-1,1))
- plt.scatter(near_city_dist,near_city_temp)
- plt.xlabel('近海城市距离')
- plt.ylabel('近海城市最高温度')
- plt.title('近海城市最高温度和距离之间的关系')
- plt.scatter(x,y)
来源: http://www.bubuko.com/infodetail-3112942.html