逻辑回归算法
分类和预测算法的一种。通过历史数据的表现对未来结果发生的概率进行预测,使一种分类算法
原理:正太态分布
函数原型
Z:可以是任意数值,该数值可以是任何表达式计算出来的值
例:复习时常与考试通过的概率:
x=hours
y=pass
z=ax+b
复习的时常与通过的概率可以是线性的。但不是越长就一定过。
函数原型即为:
使用两组已知数据代入求解可得a和b,但是那一组代入可以求出最优解?
损失函数
最小化损失函数求解。
求损失最小得最优a和b
损失函数:|y-y1|或(y-y1)平方
为得到最佳的损失函数->梯度下降算法
右边为取值不均没能求得准确的ymin
每一个值的跨度称为学习率
逻辑回归训练过程
将所有x,y输入求w,b
计算值与实际值有区别时会调整学习率,达到预测值与误差最小
逻辑回归分类过程
代码实现获取最优解
# 加载数据
cancer_data =load_breast_cancer()
# 特征数据
feature_data=cancer_data.data
# 标签数据
label_data=cancer_data.target
# 数据分割
x_train, x_test, y_train, y_test=train_test_split(feature_data,label_data,test_size=0.3,random_state=6)
# 模型选择
param_list = [
{
"penalty":['l1','l2'],
"class_weight":[None,'balanced'],
"solver":['liblinear','newton-cg','lbfgs'],
"multi_class":['ovr']
},
{
"penalty":['l1','l2'],
"class_weight":[None,'balanced'],
"solver":['sag','newton-cg','lbfgs'],
"multi_class":['multinomial']
}
]
# 算法选择
# solver:{'newton-cg','lbfgs','liblinear','sag','saga'}
# multi_class auto ovr multi
# OVR (把多元问题转换成二分类问题) 可选:liblinear newton-cg lbfgs
# OVO 一对一 multi sag newton-cg
logic_model = LogisticRegression()
grid_cv = GridSearchCV(logic_model,param_list,cv=10)
grid_cv.fit(x_train,y_train)
print(grid_cv.best_estimator_)
print(grid_cv.best_score_)
print(grid_cv.best_params_)
结果:
进行评分和预测
logic_model = LogisticRegression(class_weight='balanced', multi_class='multinomial',
solver='newton-cg')
logic_model.fit(x_train,y_train)
score=logic_model.score(x_test,y_test)
y_predict =logic_model.predict(x_test)
print(y_predict==y_test)
print("预测标签---------",y_predict)
print("实际的标签",y_test)
结果:
之后步骤与之前相同:
交叉验证->模型保存->再测试
https://blog.csdn.net/m0_64596200/article/details/126663312?spm=1001.2014.3001.5501