数学建模-逻辑回归

逻辑回归

1 作用

解决二分类问题

回归和分类的区别

回归模型的输出是连续的,分类模型的输出是离散的。

逻辑回归是什么

逻辑回归=线性回归+sigmoid函数
中的x替换为线性函数image

线性回归

y=w*x+b

sigmoid函数


1.定义:Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间。
2.适用场景:
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。

实现代码

样例数据:
image
代码:

#加载数据

import pandas as pd
import statsmodels.api as sm
import pylab as pl
import numpy as np
df=pd.read_excel("./二分类水果数据.xlsx")
df_data=df.iloc[0:37]
print(df)

from xarray.plot.utils import plt
import seaborn as sns
sns.countplot(df_data['fruit_name'],label="Count")
plt.show()

#创建训练集和测试集
X = df_data[['mass', 'width', 'height', 'color_score']]
y = df_data['fruit_name']
#数据较少不做交叉预测
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

#逻辑回归
from sklearn.linear_model import LogisticRegression
logit = LogisticRegression()
logreg=logit.fit(X, y)
print('Accuracy of Logistic regression classifier on training set: {:.2f}'
     .format(logreg.score(X_train, y_train)))
print('Accuracy of Logistic regression classifier on test set: {:.2f}'
     .format(logreg.score(X_test, y_test)))
#输出
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
data=df.iloc[38:42]
X_data=data[['mass', 'width', 'height', 'color_score']]
y_data=data['fruit_name']
pred_y= logreg.predict(X_data)#进行预测
print(pred_y)

------------
['orange' 'orange' 'orange' 'apple']
posted @ 2022-06-30 15:49  玥瑕  阅读(252)  评论(0)    收藏  举报