python逻辑回归相关库及函数

4 篇文章 0 订阅

一、相关库:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split#用来随机划分样本数据为训练集和测试集
from sklearn.metrics import classification_report#主要分类指标报告

LogisticRegression和LogisticRegressionCV的主要区别是LogisticRegressionCV使用了交叉验证来选择正则化系数C。而LogisticRegression需要自己每次指定一个正则化系数。

二、函数:

1、train_test_split():

train_X,test_X,train_y,test_y = 
train_test_split(train_data,train_target,test_size=0.2,random_state=0)
#train_data:待划分样本数据,即X
#train_target:待划分样本数据的结果,即y(标签)
#test_size:测试数据占样本数据的比例,如0.2表示训练集:测试集=8:2;如果是整数就是测试集样本数量
#random_state:设置随机数种子,保证每次都是同一个随机数;若为0或不填,则每次得到数据都不一样

2、LogisticRegression():

# 使用 lr 类,初始化模型
clf = LogisticRegression(
    penalty="l2", C=1.0, random_state=None, solver="liblinear", max_iter=4000,
    multi_class='ovr')
Logistics Regression参数名称含义
penalty正则化类型,L1或L2,默认L2
C正则化系数λ的倒数,默认1.0
random_state设置随机数种子,默认无
solver选择优化算法,只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga,默认为liblinear
max_iter算法收敛的最大迭代次数,默认100
multi_class选择分类方式,可选参数为ovr和multinomial,默认为ovr,两者区别主要在多元逻辑回归上
class_weight指定分类的权重,参数支持的类型有字典或 ‘balanced’,默认值为 None;如果不指定该参数,表示对所有样本都有相同的权重;如果为’balanced’,样本权重会根据分类样本比例进行自适应

3、fit():

#使用训练数据来学习(拟合),不需要返回值,训练的结果都在对象内部变量中
clf.fit(X_train, y_train)

4、模型(w0+w1 *x1+…+wn *xn)的属性:

clf.intercept_:w0
clf.coef_:w1-wn

5、score():

#用训练好的模型在测试集上进行评分(0~1)1代表最好
print(clf.score(X_test,y_test))

6、classification_report():

y_pred = clf.predict(X_test)#使用测试集数据来预测,返回值为预测分类数据
target_names=['class 0','class 1']#指定标签名称,默认无
print(classification_report(y_test, y_pred,target_names=target_names,sample_weight=None))
#y_test:真实数据的分类标签
#y_pred:模型预测的分类标签
#sample_weight:不同数据点在评估结果中所占的权重

示例:
在这里插入图片描述
precision:正确预测为正的,占全部预测为正的比例,即TP / (TP+FP)
recall:正确预测为正的,占全部真实为正的比例,TP / (TP+FN)
F1-score:2 * precision*recall / (precision+recall)(前两者的调和平均数)

micro avg:分类正确的样本数与分类所有样本数的比值
示例中 micro avg =(0.96 * 1207 + 0.62 * 549)/(1207 + 549) =0.85

macro avg:所有类的算术平均值
示例中 macro avg = 1/2 *(0.90+0.73)=0.81

weighted avg:所有标签结果的加权平均值

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Python实现逻辑回归的示例代码: 首先,导入需要的: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_classification ``` 接下来,生成一个二分类数据集: ```python X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=42) ``` 我们可以使用 matplotlib 来可视化数据集: ```python plt.scatter(X[:,0], X[:,1], c=y) plt.show() ``` 现在,我们定义逻辑回归函数: ```python def sigmoid(z): return 1 / (1 + np.exp(-z)) class LogisticRegression: def __init__(self, lr=0.01, num_iter=100000, fit_intercept=True, verbose=False): self.lr = lr self.num_iter = num_iter self.fit_intercept = fit_intercept self.verbose = verbose def __add_intercept(self, X): intercept = np.ones((X.shape[0], 1)) return np.concatenate((intercept, X), axis=1) def __loss(self, h, y): return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean() def fit(self, X, y): if self.fit_intercept: X = self.__add_intercept(X) self.theta = np.zeros(X.shape[1]) for i in range(self.num_iter): z = np.dot(X, self.theta) h = sigmoid(z) gradient = np.dot(X.T, (h - y)) / y.size self.theta -= self.lr * gradient if(self.verbose == True and i % 10000 == 0): z = np.dot(X, self.theta) h = sigmoid(z) print(f'loss: {self.__loss(h, y)} \t') def predict_prob(self, X): if self.fit_intercept: X = self.__add_intercept(X) return sigmoid(np.dot(X, self.theta)) def predict(self, X, threshold): return self.predict_prob(X) >= threshold ``` 然后,我们使用数据集来训练模型: ```python model = LogisticRegression(lr=0.1, num_iter=300000) model.fit(X, y) ``` 最后,我们可以使用模型来进行预测: ```python print(model.predict_prob(np.array([[1, 2]]))) print(model.predict(X, 0.5)) ``` 希望这个示例代码可以帮助你理解逻辑回归的实现过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值