#
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)