最近学习了机器学习, 有一些感触,但是没有时间详细写。这里简单给一下我写的源码(并且我是在jupyter notebook上面做的报告,所以代码格式也是jupyter notebook的,如果你需要移动到pycharm上做修改,需要做一点点微调,这很简单。因为时间,我直接将我在jupyter notebook做报告的代码直接搬过来)。
1. 准备工作
1.1 包
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 数据可视化 import seaborn as sns # 数据可视化 from sklearn.model_selection import train_test_split # 数据集划分 from sklearn.preprocessing import StandardScaler, RobustScaler # 特征值标准化 from sklearn.ensemble import RandomForestRegressor # 随机森林回归模型 from sklearn.metrics import accuracy_score, mean_squared_error, mean_squared_log_error # 模型评估
1.2 读取数据
data = pd.read_csv('D:/pycharm_storage/机器学习/项目/绘sir/NTL2012.csv')
1.3 了解数据
1.3.1 了解数据shape
data_shape = data.shape data.shape
输出结果
说明一共有18003列14行数据
1.3.2 数据的前五行和尾五行
data.head()
输出结果:
data.tail()
输出结果:
1.3.3 检查每一列的唯一值
如果你已经知道你的每一列特征项数据是何种类型(回归\连续的还是离散的),那么你无需进行这一步代码操作。由于我的数据是他人处理的,所以我需要知道数据的基本情况(包括上面的观察数据据)。
dict = {} for i in list(data.columns): dict[i] = data[i].value_counts().shape[0] pd.DataFrame(dict, index=['唯一值'])
输出结果:
以上数值均为连续值,没有离散值,选用的模型均采用回归算法
1.3.4 统计数据
这里也只是了解数据的诸如平均值,中位数,最大最小值等等基本情况
data.describe()
输出结果:
这里是查看数据的底层情况了。
data.info()
输出结果:
1.3.5 缺失值统计
将0.0值转化为np.nan(即NaN),方便计数
data.replace(0, value=np.nan, inplace=True) # data.isnull().sum()
输出结果:
上面显示的是每一列特征项中0.0(已经修改成了NaN)出现个数,由于除Y、Lat、Lon外的其它特征项出现0.0值是正常现象,所以这里不对0.0值做处理。
所以将NaN转化为0.0值方便后续运算操作。
data.replace(np.nan, value=0.0, inplace=True) data.isnull().sum()
输出结果:
没有缺失值,不需要做缺失值异常处理
2. 数据可视化与分析(做的一般)
2.1 各个维度比较(pairplot)
sns.pairplot(data, hue='Y')
输出结果:
2.2 各维度与Y的比较
plt.figure(figsize=(72, 25), dpi=180, facecolor='#ffe6e6') # data_cols = list(data.columns) data_cols.remove('Y') for i in range(13): plt.subplot(13, 2, i + 1) sns.violinplot(x='Y', y=data_cols[i], data=data, facecolor='#ffe6e6',palette='Set2')
输出结果:
2.3 相关系数矩阵
corrmat = data.corr() corrmat
输出结果:
系数矩阵——图
f, ax = plt.subplots(figsize=(12, 9)) sns.heatmap(corrmat, vmax=.8, square=True, cmap='Greens')
输出结果: