第七次作业----逻辑回归实践
1.逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合?(大家用自己的话介绍下)
正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
比如我们学到了一个模型:
y = W1X1 + W2X2 + W3X3 +W4X4
如果想变弱或消除特征X3, 其实很简单的。直接添加一项 -W3*常数 这样就起到变弱特征X3的作用。
2.用logiftic回归来进行实践操作,数据不限。
这里采用的是泰坦尼克号生存者数据集,数据集地址为:https://www.kaggle.com/c/titanic

数据集展示:

运行结果截图:

实现代码:
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import classification_report from sklearn.linear_model import LogisticRegression def logistic(): data = pd.read_csv(r'C:\Users\小天话\PycharmProjects\201706120171林皓然\test\titanic_data.csv') data.drop('PassengerId', axis=1, inplace=True) # inplace对原始数据替换,删除PassengerId这一列 data.loc[data['Sex'] == 'male', 'Sex'] = 1 # 用数值1替换male data.loc[data['Sex'] == 'female', 'Sex'] = 0 # 用数值0替换 data.fillna(data['Age'].mean(), inplace=True)#用Age均值填充该列的缺失值 print(data) x = data.iloc[:, 1:] # 取出训练数据 y = data.iloc[:, 0] # 取出目标值 x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)#按照0.3比例划分训练集和测试集 std = StandardScaler()#进行数据预处理,使得数据标准化 x_train=std.fit_transform(x_train) x_test=std.transform(x_test) lg=LogisticRegression()#构建模型 lg.fit(x_train,y_train)#委屈数据 lg_pre=lg.predict(x_test)#预测数据 print('准确率:',lg.score(x_test,y_test)) print('召回率:',classification_report(y_test,lg_pre)) if __name__=='__main__': logistic();

浙公网安备 33010602011771号