机器学习之ROC测试指标和测试集价值

来源:互联网 发布:hive 配置mysql 编辑:程序博客网 时间:2024/05/16 04:52
import pandas as pdimport numpy as npfrom sklearn.linear_model import LogisticRegressionnp.random.seed(8)admissions = pd.read_csv("D:\\test\machineLearning\\admissions.csv")admissions["actual_label"]=admissions["admit"]admissions = admissions.drop("admit",axis=1) #删除这一列admissions.head(2)
gpa gre actual_label 0 3.177277 594.102992 0 1 3.412655 631.528607 0
#洗牌操作,避免被顺序影响np.random.seed(8)shuffled_index=np.random.permutation(admissions.index)shuffled_admissions=admissions.loc[shuffled_index] #loc是根据index来获取数据,iloc是根据行号来获取数据train = shuffled_admissions.iloc[0:515]#取前512用于训练test = shuffled_admissions.iloc[515:len(shuffled_admissions)] #取后面的用于测试from sklearn.linear_model import LogisticRegressionlog = LogisticRegression()log.fit(train[["gpa"]], train["actual_label"])pre_label=log.predict(test[["gpa"]])test["predict_label"]=pre_labelmatch = (test["predict_label"] == test["actual_label"])correct_predict=test[match]accuracy=len(correct_predict)/float(len(test))print accuracy
0.635658914729C:\Users\qiujiahao\Anaconda2\lib\site-packages\ipykernel\__main__.py:13: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
import matplotlib.pyplot as pltfrom sklearn import metrics#ROC图是正力与负力的关系图probalities = log.predict_proba(test[["gpa"]])  #准确概率fpr,tpr,thresholds = metrics.roc_curve(test["actual_label"],probalities[:,1])#绘制ROC图plt.plot(fpr,tpr)plt.show()

这里写图片描述

from sklearn.metrics import roc_auc_scoreauc_score = roc_auc_score(test["actual_label"],probalities[:,1])  #求处上图的soc的有效面积是多少,我门希望负力接近1,也希望正力也接近1,所以面积越靠近1越好,依次来衡量当前模型的效果print auc_score 
0.577932098765
0 0