一、数据处理
缺失值判断:
pd.isnull(movie)
如果是缺失值返回true;返回结果是一张表,表里填满 true和false;
判断整张表是否有缺失值:
np.any(pd.isnull(movie))
反三:any-all isnull-notnull
返回结果为一个值:true/false
缺失值删除和替换
movie(“列变量名”).fillna(value=movie["列变量名"].mean(), inplace=True)
替换变量函数:fillna( )
.mean():用该列平均值替换NaN值
inplace=Ture: 不创建新的对象,直接对原始对象进行修改;
inplace=False:对数据进行修改,创建并返回新的对象承载其修改结果。
替换所有缺失值:
for i in movie.columns: #遍历列 if np.any(pd.isnull(movie[i])) == True: #如果此列有NaN值 movie[i].fillna(value=movie[i].mean(), inplace=True) np.any(pd.isnull(movie)) #检测是否替换完成
删除缺失值(整张表中)
data = movie.dropna()
缺失值不是NaN的处理情况
如将 “?”替换成np.nan
wis = wis.replace(to_replace='?',value=np.NaN)
数据离散化
pd.qcut(data,q)
数据合并
pd.concat({data, data_dummies}, axis=1)
axis参数表作用方向:此句中的axis=1表示两张表按行(水平方向)拼接
pd.merge(left, right, how="inner", left_on=None,right_on=None)
数据可视化
seaborn库介绍
- seaborn.implot() 可以再绘制二维散点图时自动完成回归拟合
- data= :关联数据集
- hue=“
matplotlin库介绍
绘制柱状图:
数据归一化
from sklearn.preprocessing import MinMaxScaler
数据标准化
实例:修改归一化实例图中的transfer = StandardScaler
即可
线性回归
API:sklearn.linear_model.LinearRegression()
属性:LinearRegression.coef_:回归系数
优化算法:
- 正规方程(直接矩阵运算求w权重,如果特征多求解速度慢,只能在线性回归总运用),
- 梯度下降(沿着切线向下的方向,递归迭代计算权重,广泛使用):找到当误差最小时,最优自变量|权重|参数
- 性能评估:使用均方误差;
适用场景: - 小规模数据建议LinearRegression(不能解决过拟合问题)和岭回归;
- 大规模用SGDRegressor:随机梯度下降
梯度下降
目的:求出当误差最小时,最优自变量|权重|参数
sklearn.linear_model.SGDRegression()
- 包:from sklearn.linear_model import SGDRegressor
- 支持loss函数(损失类型),和正则化惩罚项来拟合线性回归模型
- loss=‘squared_loss’:默认普通最小二乘法
- 可以用网络搜索算法来优化学习率和梯度迭代次数
- fit_intercept=True :是否计算偏置
- learning_rate=‘invscaling’:学习率
- ‘invscaling’:学习率算法 包含 “comstant”,“optimal”,‘invscaling’,
对于常数值的学习率可以使用“comstant”==0
max_iter=None,梯度迭代次数
SGDRegressor.coef_:查看回归系数函数
learning_rate = "constant"
指学习率为常数,但是一般常数学习率效果不好,需要使用动态变化的学习率(invscaling)
eta0:一般取值 0.01 ~ 0.001 为宜
神经网络
思想:输入最原始、最基本的数据,通过模型来进行特征工程,进行更高级的特征学习(多个特征值聚合成一个特征值),然后通过传入的数据来确定合适的参数,让模型更好的拟合数据。
激活函数:
- 作用:增加模型的非线性分割能力,提供鲁棒性(健壮性),缓解梯度消失,加速模型收敛
- 常用sigmoid:(0-1)、tanh
损失函数:
学习率(leaning rate):
当学习率设置过小时,收敛过程变得十分缓慢。
当学习率设置过大时,梯度可能会在最小值来回震荡,跳过最小值,甚至无法收敛。
参数axis:
- 表示操作抽
- axis = 0 :表纵向
- axis = 1 :表横向