用python做数据分析4|pandas库介绍之DataFrame基本操作
代码中用到NumPy、Pandas和Matplotlib库,不熟悉的可以通过如下链接学习。
NumPy: http://wiki.scipy.org/Tentative_NumPy_Tutorial
Pandas: http://pandas.pydata.org/pandas-docs/stable/tutorials.html
Matplotlib: http://matplotlib.org/users/beginner.html
一、通常遇到缺值的情况,我们会有几种常见的处理方式:
如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
二、所谓scaling,其实就是将一些变化幅度较大的特征化到[-1,1]之内。
Age和Fare两个属性,乘客的数值幅度变化,也忒大了吧!!如果大家了解逻辑回归与梯度下降的话,会知道,各属性值之间scale差距太大,将对收敛速度造成几万点伤害值!甚至不收敛! (╬▔皿▔)…所以我们先用scikit-learn里面的preprocessing模块对这俩货做一个scaling,
三、回归问题的评价测度
对于分类问题,评价测度(evaluation metrics)是准确率,但这种方法不适用于回归问题。常用的针对线性回归的测度:1)平均绝对误差(MAE);2)均方误差(MSE);3)均方根误差(RMSE)
四、Pandas中进行数据类型转换有三种基本方法:
使用astype()函数进行强制类型转换
自定义函数进行数据类型转换
使用Pandas提供的函数如to_numeric()、to_datetime()
五、numpy的ravel( 改变原始 ) 和 flatten( 不改变原始 )函数
首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view)
numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
六、 np.split(data, (4,), axis=1) split(数据,分割位置,轴=1(水平分割) or 0(垂直分割))。
七、将x 变成了矩阵 z 的行向量,y 变成了矩阵 s 的列向量。
z,s = np.meshgrid(x,y)#将两个一维数组变为二维矩阵
八、scikit-learn的决策树类型主要是来源于sklearn.tree,主要分为决策树分类DecisionTreeClassifier和决策树回归模型DecisionTreeRegressor。
决策树(Decision tree,DT)算法笔记(一)-Python
九、
网友评论