python-分类模型


# coding: utf-8

#决策树分类

import numpy as np
import pandas as pd
filename='data\\BankDebt.csv'
# data=read_csv(filename)
# data[data['拥有房产']=='是',['拥有房产']]=1
data = pd.read_csv(filename, index_col = 0, header = None)
data.loc[data[1] == 'Yes',1 ] = 1
data.loc[data[1] == 'No',1 ] = 0
data.loc[data[4] == 'Yes',4 ] = 1
data.loc[data[4] == 'No',4 ] = 0
data.loc[data[2] == 'Single',2 ] = 1
data.loc[data[2] == 'Married',2 ] = 2
data.loc[data[2] == 'Divorced',2] = 3
print( data.loc[1:5,:] )
#有效值超过4个
data.dropna(thresh=4,inplace=True)

x = data.loc[ :, 1:3 ].values.astype(float)
y = data.loc[ :, 4].values.astype(int)
from sklearn  import tree
clf=tree.DecisionTreeClassifier()
clf=clf.fit(x,y)#封装了目标函数

分类模型性能评估方法


#性能评估:计算决定系数,即为目标值和预测值之间的误差
clf.score(x,y)#accuracy
#预测数据
predicted_y = clf.predict(x)
from sklearn import metrics
#预测数据上看召回率和精确度
print(metrics.classification_report(y, predicted_y))
print('Confusion matrix:' )
metrics.confusion_matrix(y,predicted_y)

python-分类模型_第1张图片
召回率
所有标记为真实为YES的测试样本中,预测为YES的案例

r e c a l l = a a + c recall=\frac{a}{a+c} recall=a+ca

精确度
所有预测为YES的测试样本中,真实为YES的案例
p r e c s s i o n = a a + b precssion=\frac{a}{a+b} precssion=a+ba

精确度越高,意味着在遇到正例(真实为Yes)时筛选作为Yes的条件更高。召回率降低

对这一点不太理解,a/a+c中ac均减小,精确度怎么变高?

看调和平均数
F 1 = 2 a 2 a + b + c F1=\frac{2a}{2a+b+c} F1=2a+b+c2a

#找data2中的最大值和最小值位置
import pandas as pd
data=pd.read_csv("data\\stockPrice.csv",index_col=0,usecols=[0,1])
data.idxmin()#data 的date作为索引才可能找到最小值 date不是数据
data2=pd.read_csv("data\\stockPrice.csv",index_col=0)
data2=data2.reset_index()
data2=data2.drop(['date'],axis=1)
data2.idxmin()#找每一列的最小值行数
data2.stack().idxmax()
data2.stack()

引用:数据科学与技术(宋晖)

你可能感兴趣的:(python,分类,机器学习)