《封号码罗》数据分析与人工智能之sklearn模型LogisticRegression逻辑斯蒂回归(十三)
程序员文章站
2022-05-09 13:54:01
...
第一部分
# logistics逻辑斯蒂回归
import numpy as np
from sklearn.linear_model import LogisticRegression
# 逻辑斯蒂回归在线性模快下面
# 相同点:
# 线性回归---------得到线性方程
# 逻辑斯蒂回归-----得到线性方程
# 不同点:
# 线性回归解决回归预测问题
# 逻辑斯蒂回归解决分裂问题
# 所有分裂问题都是概率问题
# 线性方程----使用逻辑斯蒂函数------值变成概率0~1---分类问题
# 利用逻辑斯蒂回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式
# (f(x1, x2....) = w1 * 1 + w2 * 2 +...),以此进行分类,这里的“回归”一词源于最佳拟合。
# 表示要找到最佳拟合参数集
# 最大似然估计就是要求得时l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数
import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split
iris = datasets.load_iris() # 安德森鸢尾花卉数据集
X = iris["data"]
y = iris["target"]
# print(X.shape) # (150, 4) 150个样本,四个属性分别是花萼的长宽,花瓣的长宽
X_train, X_test, y_train, y_test = train_test_split(X, y)
# class_weight的使用,假如有两个类:类别A(100数据),类别B(200数据) class_weight={A:2,B:1}
# 惩罚L2正则项 容忍度 相当于α,正则化的强度,越大正则项越弱
lg = LogisticRegression(penalty='l2', dual=False, tol=1e-4, C=1.0,
# 截距 缩放(正则化的意思) 权重
fit_intercept=True, intercept_scaling=1, class_weight=None,
# 优化方法
random_state=None, solver='lbfgs', max_iter=100,
# 是否解决多分类问题
multi_class='auto', verbose=0, warm_start=False, n_jobs=None,
l1_ratio=None)
lg.fit(X_train, y_train)
y_ = lg.predict(X_test)
ss = lg.score(X_test, y_test)
gailv = lg.predict_proba(X_test) # 概率 谁的概率大谁就是哪个值
canshu = lg.coef_ # 斜率 3行4列 12个
jieju = lg.intercept_ # [ 9.03673323 1.72533767 -10.7620709 ]
cond = y != 2 # 三分类变成二分类
X = X[cond]
y = y[cond]
lg.fit(X, y)
# lg.coef_ [[ 0.44036482 -0.90696813 2.30849566 0.96232763]]
# lg.intercept_ [-6.61165119]
print()
第二部分
上一篇: MySQL查询之多表联查详解