import numpy as np
import pandas as pd
pd.set_option('display.max_columns',1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth',1000)
numpy.set_printoptions(threshold=numpy.nan)
集中趋势: 均值、中位数、众数、分位数
离中趋势: 标准差、方差
偏态系数: 平均值偏离状态(中位数)的一种衡量
峰态系数: 数据分布集中强度的衡量,越大顶部越尖
定类(类别): 根据事务离散、无差别属性进行的分类
定序(顺序): 可以界定数据的大小,但不能测定差值
定距(间隔): 可以界定数据大小的同时,可测定差值,但无绝对零点
定比(比率): 可以界定数据大小,可测定差值,有绝对零点
假设检验
卡方检验
方差检验
T检验:https://blog.csdn.net/m0_37777649/article/details/74938120
- 求特征协方差矩阵
- 求协方差的特征值和特征向量
- 将特征值按照从大到小的顺序排序,选择其中最大的K个
- 将样本点投影到选取的特征向量上
关键指标(正确率、召回率、f-measure、查准率、FPR、FRR)
阈值选取(ROC、AUC、增益图、KS图)
MAE、MSE、RMSE、r2_source
RMS、轮廓系数
支持度、置信度、提升度
KNN
朴素贝叶斯
决策树 (Gini系数,信息熵增益)
支持向量机(SVM)
集合方法(随机森林、Adaboost提升法)
罗基斯特映射
人工神经网络
线性回归(岭回归、Lasso)
回归树和提升树(GBDT)
聚类(K-means、DBSCAN、层次聚类、图分裂)
关联(关联规则、序列规则)
标签传播算法
# 全部的20%做验证集,剩下80%,其中25%做测试集,75%做训练集
x_tt, x_vad, y_tt, y_vad = train_test_split(f_v, l_v, test_size=0.2)
x_train, x_test, y_train, y_test = train_test_split(x_tt, y_tt, test_size=0.25)
# from sklearn.externals import joblib
# joblib.dump(knn_cls,"knn_cls")
models = []
models.append(("KNN", KNeighborsClassifier(n_neighbors=3)))
models.append(("GaussianNB",GaussianNB()))
models.append(("BernoulliNB", BernoulliNB()))
for clf_name,clf in models:
clf.fit(x_train,y_train)
xy_lst = [(x_train,y_train),(x_vad,y_vad),(x_test,y_test)]
for i in range(len(xy_lst)):
print(i)
x_part = xy_lst[i][0]
y_part = xy_lst[i][1]
y_pred = clf.predict(x_part)
print(clf_name,accuracy_score(y_part,y_pred))
print(clf_name,recall_score(y_part, y_pred))
print(clf_name,f1_score(y_part, y_pred))
- isnull(),检测是否有空值
- mean(), 检测平均值
- median(),检测中位数
- std(),检测标准差
- max(),检测最大值
- min(),检测最小值
- skew(),检测偏态系数
- kurt(),检测峰态系数
- 通过连续异常可以清除异常数据:
[le_s<上四分位数+k(一般为1.5)*(上四分位数-下四分位数)][le_s>下四分位数-k*(上四分位数-下四分位数)]
- histogram(),可以画直方图
- 清洗数据
- 得到标注,就是需要研究的数据
- 把数值类型的数据,进行数据预处理,归一化(MinMaxScaler)或者标准化(StandardScaler)
- 把非数值类型的数据,进行数值化,独热编码(One-Hot Encoding)和 LabelEncoder标签编码
- 特征降维,PCA或者LDA
- 划分训练集,测试集,验证集(train_test_split)
- 选择模型(分类、回归、聚类、关联、半监督)
- 模型评估