博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习简易入门(四)- logistic回归
阅读量:4287 次
发布时间:2019-05-27

本文共 2749 字,大约阅读时间需要 9 分钟。

摘要:使用logistic回归来预测某个人的入学申请是否会被接受

声明:(本文的内容非原创,但经过本人翻译和总结而来,转载请注明出处)

本文内容来源:

 

原始数据展示

这是一份美国入学申请的录取记录表,admit – 是否录取,1代表录取,0代表否定;gpa – gpa成绩,gre – 绩点

import pandasadmissions = pandas.read_csv('admissions.csv')

在之前已经介绍过了线性回归,现在同样使用线性回归来进行预测

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()#训练模型model.fit(admissions[['gre', 'gpa']], admissions["admit"])admit_prediction = model.predict(admissions[['gre', 'gpa']])plt.xlabel('gpa')plt.ylabel('admit_prediction')plt.scatter(admissions["gpa"], admit_prediction)plt.show()

在上图中可见,有些预测结果小于0,而这明显是不对的,因为预测结果应该只能为0或者1,我们现在需要获取一个介于0和1之间的概率,然后通过之前的文章中介绍过的分类算法()来确定录取一个人的概率的阀值来决定录取结果,最终生成只有0和1的结果

 

logistic回归函数

logistic回归产生的输出都位于0和1之间,通常用来产生预测某个事件的发生概率,该函数的格式为,其中的e是一个无理数常量,该函数有一个很漂亮的形状

# logistic回归函数def logit(x):return np.exp(x) / (1 + np.exp(x)) # 在-6到6之间等差产生50个数t = np.linspace(-6,6,50, dtype=float)ylogit = logit(t)#作图plt.plot(t, ylogit, label="logistic")plt.ylabel("Probability")plt.xlabel("t")plt.title("Logistic Function")plt.show()

logistic回归

在线性回归方程中,可以将该方程产生的结果y放入到logistic回归方程,从而将线性方程产生的结果转换为一个概率,对于本文来说,这个logistic回归方程为,现在根据这个logistic回归方程就能产生一个录取概率。

类似于之前使用scikit-learn库中的线性回归,现在也可以直接使用该库中的logistic回归

from sklearn.linear_model import LogisticRegression#对数据集进行随机重排序admissions = admissions.loc[np.random.permutation(admissions.index)]# 将随机排序后的前700条数据作为训练集,后面的作为测试集num_train = 700data_train = admissions[:num_train]data_test = admissions[num_train:]logistic_model = LogisticRegression()logistic_model.fit(data_train[['gpa', 'gre']], data_train['admit'])# 进行测试fitted_test = logistic_model.predict_proba(data_test[['gpa', 'gre']])[:, 1] #因为predict_proba返回的是一个两列的矩阵,矩阵的每一行代表的是对一个事件的预测结果,第一列代表该事件不会发生的概率,第二列代表的是该事件会发生的概率。而这里需要的是第二列的数据plt.scatter(data_test['gre'], fitted_test)plt.xlabel('gre')plt.ylabel('probability ')plt.show()

评估模型

准确率

现在假设只要录取概率大于0.5的就能录取,计算一下这个模型的准确性

# predict()函数会自动把阀值设置为0.5predicted = logistic_model.predict(data_train[['gpa','gre']])# 计算在训练集中正确预测的准确率accuracy_train = (predicted == data_train['admit']).mean()#计算在测试集中正确预测的准确率predicted = logistic_model.predict(data_test[['gpa','gre']])accuracy_test = (predicted == data_test['admit']).mean()

ROC曲线

分别计算训练集和测试集的ROC曲线和AUC

from sklearn.metrics import roc_curve, roc_auc_scoretrain_probs = logistic_model.predict_proba(data_train[['gpa', 'gre']])[:,1]test_probs = logistic_model.predict_proba(data_test[['gpa', 'gre']])[:,1]#计算AUCauc_train = roc_auc_score(data_train["admit"], train_probs)auc_test = roc_auc_score(data_test["admit"], test_probs)print('Auc_train: {}'.format(auc_train))print('Auc_test: {}'.format(auc_test))# 计算ROC曲线roc_train = roc_curve(data_train["admit"], train_probs)roc_test = roc_curve(data_test["admit"], test_probs)# 作图plt.plot(roc_train[0], roc_train[1])plt.plot(roc_test[0], roc_test[1])

你可能感兴趣的文章
【论文笔记】
查看>>
论文笔记
查看>>
论文笔记 | Attention-based LSTM for Aspect-level Sentiment Classification
查看>>
【论文笔记】Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme
查看>>
论文笔记|Bidirectional LSTM-CRF Models for Sequence Tagging
查看>>
论文笔记:Constructing Narrative Event Evolutionary Graph for Script Event Prediction
查看>>
论文笔记: Hierarchical Chinese Legal event extraction via Pedal Attention Mechanism
查看>>
论文笔记 | Enhancing Pre-Trained Language Representations with Rich Knowledge for MRC
查看>>
论文笔记 | Text Summarization with Pretrained Encoders
查看>>
论文笔记:Document-level Event Extraction via Heterogeneous Graph-based Interaction Model with a Tracker
查看>>
论文笔记丨Inductive Unsupervised Domain Adaptation for Few-Shot Classification via Clustering
查看>>
论文笔记|GSum: A General Framework for Guided Neural Abstractive Summarization
查看>>
论文笔记 | Does Structure Matter? Encoding Documents for Machine Reading Comprehension
查看>>
论文笔记|Self-Supervised Test-Time Learning for Reading Comprehension
查看>>
论文笔记|Open-world Learning and Application to Product Classification
查看>>
论文笔记 _ ELECTRA_ Pre-training Text Encoders as Discriminators Rather than Generators
查看>>
【论文笔记】
查看>>
论文笔记:Exploring Pre-trained Language Models for Event Extraction and Generation
查看>>
论文解读 | QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION
查看>>
linux 安装nginx
查看>>