- 5.2 数据预处理
- 5.2.1 缺失值处理
- 5.2.2 数据规范化
- 5.2.3 主成分分析
- 5.3 线性回归 (回归模型)
- 5.4 逻辑回归(分类模型)
- 5.5 神经网络
- 5.5.3 Python 神经网络 分类 应用
- 5.5.4 Python 神经网络 回归 应用
- 5.6 支持向量机
- 核函数选择:
- 5.7 K-均值聚类
- Python K-均值聚类算法应用
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
# 也可合并
pd.DataFrame(np.array([[1,2],[3,5]]))
# 获取数据
data=np.load('data.npy')
data=data[:,1:] # 去除序号
# 均值填充 from sklearn.impute import SimpleImputer # SimpleImputer取代了以前的sklearn.preprocessing.Imputer imp = SimpleImputer(missing_values=np.nan, strategy='mean') #创建按列均值填充策略对象 # 可选参数:medianmost_frequent imp.fit( data) # data的数据类型为ndarray和DataFrame均可 data = imp.transform(data)5.2.2 数据规范化
# 1.数据规范化___均值-方差规范化 from sklearn.preprocessing import StandardScaler,MinMaxScaler x=data scaler = StandardScaler() # MinMaxScaler() scaler.fit(x) x=scaler.transform(x)5.2.3 主成分分析
# 相关系数矩阵
import pandas as pd
Data=pd.read_excel('农村居民人均可支配收入来源2016.xlsx')
X=Data.iloc[:,1:]
R=X.corr() # 计算变量间相关系数
# 数据规范化处理 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X) X=scaler.transform(X)
# ① 导入主成分分析模块 PCA。 from sklearn.decomposition import PCA # ② 利用 PCA 创建主成分分析对象 pca。 pca=PCA(n_components=0.95) #这里设置累计贡献率为 95%以上。 # ③ 调用 pca 对象中的 fit()方法,对待分析的数据进行拟合训练。 pca.fit(X) # ④ 调用 pca 对象中的 transform()方法,返回提取的主成分。 Y=pca.transform(X)
# ⑤ 通过 pca 对象中的 components_属性、explained_variance_属性、explained_variance_ ratio_属性,返回主成分分析中对应的特征向量、特征值和主成分方差百分比(贡献率), # 比如: tzxl=pca.components_ #返回特征向量 print(tzxl) tz=pca.explained_variance_ #返回特征值 print(tz) gxl=pca.explained_variance_ratio_ #返回主成分方差百分比(贡献率) print(gxl)
# 第 1 个主成分前面的 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=gxl[0]*Y[:,0]+gxl[1]*Y[:,1]+gxl[2]*Y[:,2] #综合得分=各个主成分×贡献率之和 (序列对应求和) print(F) dq=list(Data['地区'].values) #提取地区 # 构建序列,设置索引和值 Rs=pd.Series(F,index=dq) #以地区作为 index,综合得分为值,构建序列 Rs=Rs.sort_values(ascending=False) #按综合得分降序进行排序5.3 线性回归 (回归模型)
data的数据类型为ndarray和DataFrame均可作为算法模型的输入类型
import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
x = data.iloc[:,0:4]
y = data.iloc[:,4].values # #新版pandas中:df.as_matrix()改写成 df.values
print(x)
print(type(x))
print(type(y))
import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
x = data.iloc[:,0:4]
y = data.iloc[:,4].values # #新版pandas中:df.as_matrix()改写成 df.values
print(x)
print(type(x))
print(type(y))
# 线性回归分析 # 1)导入线性回归模块,简称为 LR。 from sklearn.linear_model import LinearRegression as 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)
# 输出
print('x 回归系数为:',c_x)
print('回归系数常数项为:',c_b)
print('判定系数为:',Slr)
print('样本预测值为:',R1)
5.4 逻辑回归(分类模型)
线性回归对应回归问题,逻辑回归对应分类问题
回归模型的score输出为拟合优度(判决系数)
分类模型的score输出为准确率
import pandas as pd
data = pd.read_excel('credit.xlsx')
# 手动划分数据集 # 前600个样本训练模型 x = data.iloc[:600,:14] y = data.iloc[:600,14] # 600后的样本测试 x1= data.iloc[600:,:14] y1= data.iloc[600:,14]
from sklearn.linear_model import LogisticRegression as LR lr = LR(max_iter=3000)
lr.fit(x, y) r=lr.score(x, y) # 模型准确率(针对训练数据)
# 测试集预测准确率
R =lr.predict(x1) # 预测值
Z=R-y1
Rs=len(Z[Z==0])/len(Z) # 手动计算结果准确率
print('预测结果为:',R)
print('预测准确率为:',Rs)
RR = lr.score(x1, y1) # 直接输出准确率
5.5 神经网络
5.5.3 Python 神经网络 分类 应用
import pandas as pd
data = pd.read_excel('credit.xlsx')
# 前600个样本训练模型
x = data.iloc[:600,:14]
y = data.iloc[:600,14]
# 600后的样本测试
x1= data.iloc[600:,:14]
y1= data.iloc[600:,14]
from sklearn.neural_network import MLPClassifier # 多层感知机分类器
# (2)利用 MLPClassifier 创建神经网络分类对象 clf。
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5,2), random_state=1, max_iter=3000) # solver:神经网络优化求解算法,包括 lbfgs、sgd、adam 3 种,默认为 adam。
clf.fit(x, y)
# (4)调用 clf 对象中的 score ()方法,获得神经网络的预测准确率(针对训练数据)。
rv=clf.score(x,y)
R=clf.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:',R)
print('预测准确率为:',Rs)
RR = clf.score(x1, y1)
5.5.4 Python 神经网络 回归 应用
import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
x = data.iloc[:,0:4]
y = data.iloc[:,4]
from sklearn.neural_network import MLPRegressor # 多层感知机回归
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=8, random_state=1) # solver:神经网络优化求解算法,包括 lbfgs、sgd、adam 3 种,默认为 adam。
clf.fit(x, y)
# (4)调用 clf 对象中的 score ()方法,获得神经网络回归的拟合优度(判决系数)。
rv=clf.score(x,y)
import numpy as np
x1=np.array([28.4,50.6,1011.9,80.54])
x1=x1.reshape(1,4)
R=clf.predict(x1)
print('样本预测值为:',R)
5.6 支持向量机
核函数选择:
可以选择线性核linear、多项式核poly、高斯核rbf、sig核sigmoid,默认情况下选择高斯核。
import pandas as pd
data = pd.read_excel('car.xlsx')
x = data.iloc[:1690,:6]
y = data.iloc[:1690,6]
x1= data.iloc[1691:,:6]
y1= data.iloc[1691:,6]
from sklearn import svm clf = svm.SVC(kernel='rbf') # 其中核函数可以选择线性核、多项式核、高斯核、sig 核,分别用 linear、poly、rbf、sigmoid 表示,默认情况下选择高斯核。 clf.fit(x, y) rv=clf.score(x, y) # 模型准确率(针对训练数据)
R=clf.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:',R)
print('预测准确率为:',Rs)
5.7 K-均值聚类
Python K-均值聚类算法应用
# 1.数据获取及标准化处理
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)
# 2.K-均值聚类分析 from sklearn.cluster import KMeans model = KMeans(n_clusters = 4, random_state=0, max_iter = 500) model.fit(X) # (4)获取 model 对象中的 labels_属性,可以返回其聚类的标签。类标签的数值没有实际的意义,仅起到类标注的作用。 c=model.labels_ Fs=pd.Series(c,index=data['地区']) Fs=Fs.sort_values(ascending=True) Fs



