7.逻辑回归实践
1.逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合?
增加样本量,这是万能的方法,适用任何模型。过拟合的时候,拟合函数的系数往往非常大,而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
from sklearn.linear_model import LogisticRegression #从机器学习中导入逻辑回归
from sklearn.model_selection import train_test_split #拆分为训练集合测试集
from sklearn.preprocessing import StandardScaler #标准化
from sklearn.metrics import classification_report #召回率
import pandas as pd
# 读取数据
data = pd.read_csv('.\data1.csv')
# 数值型转换,性别女为0 男为1,有缺失值的行直接删除
data.loc[data['Sex'] == 'male', 'Sex'] = 0
data.loc[data['Sex'] == 'female', 'Sex'] = 1
#去除空值
data = data.dropna()
#查看数据集
print(data)
# 数据集划分
x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, 1:], data.iloc[:, 0], test_size=0.3)
# 进行标准化处理,特征值和目标值进行标准化处理(需要分别处理),实例标准化API
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
# 构建模型
lg = LogisticRegression()
#训练模型
lg.fit(x_train, y_train)
#训练系数
print("训练系数:\n",lg.coef_)
#数据集准确率
train_score=lg.score(x_train,y_train)
print("训练集准确率:\n",train_score)
test_score=lg.score(x_test,y_test)
print("测试集准确率:\n",test_score)
#预测
lg_predict = lg.predict(x_test)
print('召回率:', classification_report(y_test, lg_predict, target_names=['存活', '遇难']))


浙公网安备 33010602011771号