机器学习包Scikit-learn(一)

数据预处理

缺失值处理

import pandas as pd
import numpy as np
data=pd.read_excel('missing.xlsx')#数据框data
c=np.array([[1,2,3,4],[4,5,6,np.nan],[5,6,7,8],[9,4,np.nan,8]])#数组c
C=pd.DataFrame(c)#数据框C

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Scikit-learn中的数据预处理模块进行缺失值填充
下面对C数据框中的数据采用按列均值填充
对c数组中的数据采用按行中位数填充
对data数据中的a,c列采用按列最频繁值填充进行填充

from sklearn.impute import SimpleImputer
fC=C
imp=SimpleImputer(missing_values=np.nan,strategy='mean')
imp.fit(fC)
fC=imp.transform(fC)

fc=c
imp=SimpleImputer(missing_values=np.nan,strategy='median')
imp.fit(fc)
fc=imp.transform(fc)

fD=data[['a','c']]
imp=SimpleImputer(missing_values=np.nan,strategy='most_frequent')
imp.fit(fD)
fD=imp.transform(fD)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据规范化

import numpy as np
data=np.load('data.npy')
data=data[:,1:]

在这里插入图片描述
可以看出指标之间的数据差异比较大,需要做规范化处理
同时该数据存在空值,在进行规范化处理之前需要先对其进行填充处理
这里采用按列均值填充

from sklearn.impute import SimpleImputer
imp=SimpleImputer(missing_values=np.nan,strategy='mean')
imp.fit(data)
data=imp.transform(data)

在这里插入图片描述
为了区分,定义x=data,x1=data
对x做均值-方差规范化处理
对x1做极差规范化处理

首先对x做均值-方差规范化处理

from sklearn.preprocessing import StandardScaler
x=data
scaler=StandardScaler()
scaler.fit(x)
x=scaler.transform(x)

在这里插入图片描述
对x1做极差规范化处理

from sklearn.preprocessing import MinMaxScaler
x1=data
min_max_scaler=MinMaxScaler()
min_max_scaler.fit(x1)
x1=min_max_scaler.transform(x1)

在这里插入图片描述

主成分分析

import pandas as pd
Data=pd.read_excel('农村居民人均可支配收入来源2016.xlsx')
X=Data.iloc[:,1:]
#数据规范化处理
from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
scaler.fit(X)
X=scaler.transform(X)

在这里插入图片描述

在这里插入图片描述

#主成分分析
from sklearn.decomposition import PCA#导入主成分分析模块PCA
pca=PCA(n_components=0.95)#创建对象pca,设置累计贡献率为95%以上
pca.fit(X)#对待分析的数据进拟合训练
Y=pca.transform(X)#返回提取的主成分
tzxl=pca.components_#特征向量
tz=pca.explained_variance_#特征值
gxl=pca.explained_variance_ratio_#主成分方差百分比(贡献率)
#验证第一个主成分前面的4个分量的值
Y00=sum(X[0,:]*tzxl[0,:])
Y01=sum(X[1,:]*tzxl[0,:])
Y02=sum(X[2,:]*tzxl[0,:])
Y03=sum(X[3,:]*tzxl[0,:])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基于主成分进行综合排名.
定义综合排名指标为F
F计算公式
F=g1Y1+g2F2+…+gmFm
m表示提取的主成分个数,Fi和gi(i<=m)分别表示第i个主成分和其贡献率

F=gxl[0]*Y[:,0]+gxl[1]*Y[:,1]+gxl[2]*Y[:,2]#综合得分=各个主成分*贡献率之和
dq=list(Data['地区'].values)#提取地区
Rs=pd.Series(F,index=dq)#以地区作为index,综合得分为值,构建序列
Rs=Rs.sort_values(ascending=False)#按综合得分降序进行排序

在这里插入图片描述

线性回归

在发电场中电力输出(PE)与AT(温度)、V(压力)、AP(湿度)、RH(压强)有关
求出PE与AT、V、AP、RH之间的线性回归关系式系数向量(包括常数项)和拟合优度(判定系数)
今有某次测试数据AT=28.4、V=50.6、AP=1011.9、RH=80.54,试利用构建的线性回归模型预测其PE值

读取数据,确定自变量x和因变量y

import pandas as pd
data=pd.read_excel('发电场数据.xlsx')
x=data.iloc[:,0:4].values
y=data.iloc[:,4].values

在这里插入图片描述

在这里插入图片描述

线性回归分析

#导入线性回归模块,简称为LR
from sklearn.linear_model import LinearRegression as LR
lr=LR()#利用LR创建线性回归对象lr
lr.fit(x,y)#对数据进行拟合训练
Slr=lr.score(x,y)#判定系数R^2
c_x=lr.coef_#x对应的回归系数
c_b=lr.intercept_#回归系数常数项

在这里插入图片描述
在这里插入图片描述

利用线性回归模型进行预测

(1)可以利用lr对象中的predict()方法进行预测

import numpy as np
x1=np.array([28.4,50.6,1011.9,80.54])
x1=x1.reshape(1,4)
R1=lr.predict(x1)

(2)也可以利用线性回归方程式进行预测

r1=x1*c_x
R2=r1.sum()+c_b

在这里插入图片描述
两种方法预测结果一致

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据攻城小狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值