1.任务工程
8.1.1 任务一:缺失值填充
review:
train['Cabin']=train['Cabin'].fillna('NA')
train['Embarked']=train['Embarked'].fillna('S')
train['Age']=train['Age'].fillna(train['Age'].mean())
train.isnull.mean().sort_values(ascending=False)
编码分类变量:
pd.get_dummies()
使用pandas的get_dummies函数对分类特征进行OneHot编码
离散特征的编码分为两种情况:
1、离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码
2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}
data=train[[ ]]
data=pd.get_dummies(data)
data.head()
scikit-learn
https://github.com/apachecn/sklearn-doc-zh这个还不错,收着慢慢看
from sklearn.model_selection import train_test_split
# 一般先取出X和y后再切割,有些情况会使用到未切割的,这时候X和y就可以用
X = data
y = train['Survived']
# 对数据集进行切割
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
# 查看数据形状
X_train.shape, X_test.shape
任务二:模型创建
创建基于线性模型的分类模型(逻辑回归)
创建基于树的分类模型(决策树、随机森林)
查看模型的参数,并更改参数值,观察模型变化
Logistic Regression
逻辑回归虽然名字里带“回归”,但它不解决回归问题,而是处理分类问题。回归问题中预测值y是一系列连续值,而分类问题中y是一些离散的值。通常二分类的预测值y可以用0和1表示。例如,要建立一个垃圾邮件的分类器,那么x(i)表示邮件的特征,y是邮件的标签。当y=0时,属于正常邮件,y=1时,属于垃圾邮件。0和1分别为负例和正例,可以用符号”-“、”+“表示。现在先选择一个函数hθ(x),能够表示分类问题。一次参数。与之相对应的,是批梯度上升。
虽然决策函数hθ(x(i))是一个非线性的函数,这个公式是由一个不同的算法推导出来,但是推导过程与最终结果都与线性回归与最小二乘法差不多。
随机森林
这两个还搞清楚,明天继续~