任务要求:
根据数据集中大学生的两次考试成绩(gpa,gra)预测大学生能否被美国大学录取(admit=1表示录取,否则为不录取)。
大致思路:
(1)建立模型:采用sklearn中的逻辑回归模型,先进行数据训练,得出模型参数之后,再预测一下不同考试成绩的学生能否被录取
(2)评估模型:在模型评估中可以分别验证正例和负例的效果、测试ROC指标、交叉验证等等。其中交叉验证可以直接调用sklearn的库。
代码详解:
读入数据,因为数据没有列名,所以添加上列名,从数据可看到,分越高越可能被录取
import pandas as pd
import matplotlib.pyplot as plt
columns = ["gpa", "gre", "admit"]
admissions = pd.read_csv("C:\Anaconda\machine-leaning-data\grade-admit\grade-admit.txt",names=columns)
plt.scatter(admissions["gpa"], admissions["admit"])
plt.show()
sigmoid函数写法:在逻辑回归中,是通过sigmoid函数并确定一个阈值来预测学生有没有被录取,通过sigmoid函数将模型的得分值,映射到【0,1】,将得分值映射为概率值,概率值一般小于0.5的就是没有录取,大于0.5就是录取
#sigmoid函数
import numpy as np
#Logit Function
def logit(x):
return np.exp(x)/(1+np.exp(x)) #sigmod函数,将模型的得分值,映射到[0,1]区间内 ,分值转换为概率值,按照概率来判断该学生能否被录取
x=np.linspace(-6,6,50,dtype=float) #从x轴中取出了从-6到6的50个样本点,对应y轴的映射是float类型的
y=logit(x)#调用函数
#画图看看sigmod函数的图像和效果
plt.plot(x,y)
plt.ylabel("Probalility")
plt.show()
用逻辑回归模型训练数据,通过训练gpa和admit 找出内在关系,并用predict_proba预测录取的可能性.#predict_proba 这个函数是预测概率的,值是一个概率,而不是0/1这样确定的值.
from sklearn.linear_model import LogisticRegression