这个文档是在学习python机器学习时遇到的一些问题汇总。有的时候有些不常用的处理时间之类的代码就记不起来,然后我就到这个文档里找。
确实是有点乱,但是我通常用ctrl+f,查找关键字,一般很快就能找出来,大家如果需要的话,也可以通篇先复制到word里。
# metrics衡量指标,误差度量
import sklearn.metrics as skm #聚类评估包
skm.silhouette_score(数据集,聚类结果) #此次聚类的Si
skm.calinski_harabaz_score(数据集,聚类结果)#此次聚类的CH 指标的Vrc, 结果越大越好
from sklearn import metrics #accuracy measure
from sklearn.metrics import accuracy_score #准确率
from sklearn.metrics import precision_score #精确率
from sklearn.metrics import recall_score #召回率
from sklearn.metrics import f1_score
from sklearn.metrics import classification_report #分类报告
from sklearn.metrics import roc_curve #ROC曲线
from sklearn.metrics import auc #roc曲线下的面积,越大越好
from sklearn.metrics import roc_auc_score #ROC得分
from sklearn.metrics import classification_report #分类评估报告
from sklearn.metrics import confusion_matrix #混淆矩阵
from sklearn.metrics import r2_score #r^2,残差
r2_score(lr_pre,y_test) #判断预测结果好坏
lr.intercept_ #方程截距,常数项
fpr,tpr,thre=roc_curve(test['y'],pre)
precision_score(average=)
average: string, [None, ‘micro’(微平均), ‘macro’(default)(宏平均), ‘samples’(加权平均), ‘weighted’]
from sklearn import cluster #聚类分析
#聚类k-means
读取数据:注意sheet_name=0/1/2..
将样本名称设为索引,并去掉一层:
data.index=data.企业
data=data.iloc[:,1:]
进行0-1标准化 对某列应用函数:
data=data.apply(lambda x:(x-min(x))/(max(x)-min(x)),axis=0)
建立模型:model=cluster.KMeans(3,max_iter=10) 参数为簇数,最大迭代次数
拟合数据:jieguo=model.fit(data)
查看分组结果:jieguo.labels_
查看最后一次中心点:jieguo.cluster_centers_
kmeans.inertia_ #sse
#交叉验证 模型选择
from sklearn.model_selection import KFold #K折交叉验证,样本量不足时使用,逻辑回归
from sklearn.model_selection import cross_val_score #score evaluation
from sklearn.model_selection import cross_val_predict #prediction
from sklearn.model_selection import GridSearchCV #重要程度,网格搜索,找最好的超参数
#超参数的设置
C=[0.001,0.01,0.05,0.1,0.2,0.3,0.25,0.4,0.5] # 7个参数,惩罚力度
gamma=[0.01,0.05,0.1,0.2,0.3,0.4] # 6个参数 核函数参数
kernel=['rbf','linear','poly'] # 3个参数,svm的不同核函数
hyper={'kernel':kernel,'C':C,'gamma':gamma}
gd=GridSearchCV(estimator=svm.SVC(),cv=10,param_grid=hyper,verbose=True) # 10次交叉验证cv=10,将模型拆为几份,每次选择一份作为验证集,共验证10次
gd.fit(X,Y)
print(gd.best_score_) #最好的评分
print(gd.best_estimator_) #最好的模型的各个参数
Accuracy = accuracy_score(y_test,predict) #准确率
cn = confusion_matrix(y_test,predict) #混淆矩阵
classification_report(y_test,predict) #精确率,召回率,准确率,分析报告
#importing all the required ML packages
from sklearn.linear_model import LogisticRegression #logistic regression,逻辑回归
from sklearn import svm #support vector Machine,支持向量机
from sklearn.neighbors import KNeighborsClassifier #KNN,k近邻
from sklearn.naive_bayes import MultinomialNB#贝叶斯#
from sklearn.naive_bayes import GaussianNB #高斯分布,朴素贝叶斯
#朴素贝叶斯 (条件特征独立) 相关系数(协方差/各自标准差之积)data.iloc[:,:10].corr(), r > 0.3 为有相关性, 热力图
#多项式(MultinomialNB) 要求特征(所有的X)为离散数据, 不要有负数, unique, value_counts
#训练集取值不全,会出现概率为0---》平滑处理 ,分子分母加各常数 alpha , alpha = 1 拉普拉斯平滑
#高斯(正态)(GaussianNB) 要求特征(所有的X)为连续数据,并且为正态分布
#正态性检验
#画图 直方图
#KS n>5000 ks ns<2000 sw H0:正态
正态性检验
From scipy import stats #sw 返回值(统计量, P-value)
stats.kstest(data["单价(平方米)Y"].values.reshape(-1,1),"norm") #ks,》5000,大样本
stats.shapiro(data.iloc[:,6].values) #sw,<2000,小样本
#伯努利分布(BernoulliNB) 要求特征(所有的X)二项分布数据 用到的少
#树模型
from sklearn.tree import DecisionTreeClassifier #决策树,分类
from sklearn.tree import DecisionTreeRegressor #决策树,回归
from sklearn.metrics import classification_report,分类报告
from sklearn.linear_model import LinearRegression #线性回归
#画决策树图
from sklearn.externals.six import StringIO
dot_data = StringIO() #解决中文乱码
#图形化树结构
dot_tree = tree.export_graphviz(cl_tr(模型),out_file=dot_data, #树的内容存入dot_data对象
feature_names=['有房','婚姻状况','年收入'],#X特征的列名
class_names=['否','是'],#去重后Y的取值,注意顺序别标反
filled=True, #是否有填充色
rounded=True #是否为圆角边
)
import graphviz
graph = graphviz.Source(dot_data.getvalue().replace("helvetica",'"Microsoft YaHei"')) #把dot_data 内容转化为图形
#replace("helvetica",'"Microsoft YaHei"') 是为解决中文乱码
#图形导出
graph.render("d:/ttt")
graph
#集成
from sklearn.ensemble import BaggingClassifier #并行,典型代表是随机森林
from sklearn.ensemble import RandomForestClassifier #Random Forest,随机森林,分类
from sklearn.ensemble import VotingClassifier #投票分类器,y为分类型数据
from sklearn.ensemble import AdaBoostClassifier #串行,boosting,分类
from sklearn.ensemble import AdaBoostRegressor #回归
from sklearn.ensemble import GradientBoostingClassifier
from xgboost.sklearn import XGBClassifier
import xgboost as xgb
model = LogisticRegression()
model .fit(X_train,y_train)
pred = mo