pandas+sklearn:常用API介绍总结

1.pandas:常用API总结

df的属性:df.values\df.columns\df.index\df.dtypes等
df.info()
df.describe() # 只对数据类型的字段进行计算显示
df.head()
df.get_dtype_counts()
df.loc[行,列]索引的名字—data.loc[‘2018-02-27’:‘2018-02-22’, ‘字段名’]
df.iloc[行,列]索引的下标—data.iloc[0:100, 0:2].head()
df.reset_index(drop=True)—当dataframe按条件筛选后,取出的数据的index并不是从0开始的,设置drop=True就可以删除旧索引
df.isnull().sum() #查看缺失值个数
df.sort_values(by=‘字段名’, ascending=False) # ascending指定按照大小排序
df.sort_values(by=[‘字段1’, ‘字段2’]) # 按照多个键进行排序

离散化 cut、qcut

pd.cut(data, bins=bins, labels=[‘高’, ‘中’, ‘低’]) #labels是给每个区间取别名

cut默认是左开右闭,传入right=False,变为左闭右开

合并

pd.concat([data1, data2], axis=1) #按照行或列进行合并
result = pd.merge(left, right, how=‘left’, on=[‘key1’, ‘key2’]) #on是共有的键、how='outer’外连接
pd.plotting.scatter_matrix # 两两关联散点图

相关系数

df.corr(method=“pearson”)[[“label”]].sort_values(“label”, ascending=False) #直接查看个特征与目标值之间的相关系数
method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}

转化成时间格式

转化方法有2种:pd.to_datetime(时间列表)\pd.DatetimeIndex(时间列表),时间列表可以是datetime时间组成的列表,
也可以直接是字符串的列表[‘2018-03-01’, ‘2018-03-02’, ‘2018-03-03’]
属性:values、year、month、weekday、day、hour
通过日期数据的dt获取:data[‘日期’].dt.day


2.sklearn 常用API总结

2.1特征工程相关

特征提取

sklearn.feature_extraction 下的 DictVectorizer\text.CountVectorizer\text.TfidfVectorizer(返回词频矩阵)

归一化、标准化

sklearn.preprocessing 下的 MinMaxScaler()\StandarScaler()

类别特征转化数值特征

对类别比较多的情况也可以考虑使用
sklearn.preprocessing.OrdinalEncoder()——数值型索引,将需要转化的特征挑选出来,传入fit_transform即可
少量的 用one-hot进行编码,使用pandas的 pd.get_dummies(p_counts, prefix=“rise”) #只对非数值型的字段进行处理

样本不均衡时—过采样、欠采样

pip install imblearn导入模块—该模块使用时注意:不能有缺失值
过采样:from imblearn.over_sampling import SMOTE SMOTE()
把数据x,y传进去,直接会将样本少的,变成和样本多的一样多,返回x_smote,y_smote,直接可以拿去数据集划分,然后训练使用
smo=SMOTE(random_state=42)
random_state相当于随机种子 x_smo,y_smo=smo.fit_sample(x,y)
xs_train,xs_test,ys_train,ys_test=train_test_split(x_smo,y_smo,test_size=0.3,random_state=100)
也可进行合并pd,concat([x_smote,y_smote], axis=1)
欠采样:from imblearn.under_sampling import RandomUnderSampler—同SMOTE的使用

降维–主成分分析PCA

API—sklearn.decomposition.PCA(n_components=None) n_components:小数:表示保留百分之多少的信息 整数:减少到多少特征
PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features] #返回值:转换后指定维度的array

数据集划分
训练集一般占70% 测试集一般占30%
sklearn.model_selection.train_test_split(arrays, *options)

模型选择与调优—交叉验证CV
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)


2.2算法API总结

KNN

—使用场景:小数据场景,几千~几万样本,具体场景具体业务去测试
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
优点:简单,易于理解,易于实现,无需训练
缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大、必须指定K值,K值选择不当则分类精度不能保证
注意点:超参数K值,交叉验证获取最优值

朴素贝叶斯算法(需要计算先验概率)
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
优点:朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。对缺失数据不太敏感,算法也比较简单,常用于文本分类。分类准确度高,速度快
缺点:由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好

决策树(信息论:信息熵 信息增益)
常用场景:强调解释性、要求给出一个明确的业务指导的时候首选
决策边界(可解释的规则)——当满足什么条件时,做出什么样的决定
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
决策树的三种算法实现
ID3:信息增益 最大的准则、别计算每个特征的信息增益,,按大到小
C4.5:信息增益比 最大的准则
CART:分类树: 基尼系数 最小的准则 在sklearn中可以选择划分的默认原则、 优势:划分更加细致(从后面例子的树显示来理解)
优点:简单的理解和解释,树可视化,对异常值不敏感
缺点:决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合。

保存树的结构到dot文件
1、sklearn.tree.export_graphviz() 该函数能够导出DOT格式
tree.export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])
2、工具:(能够将dot文件转换为pdf、png) 安装graphviz
ubuntu:sudo apt-get install graphviz Mac:brew install graphviz
3、运行命令:dot -Tpng tree.dot -o tree.png
随机森林

—集成多个决策树的分类器—输出的类别是由多个决策树的众数决定的
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’,
max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
原理过程:用N来表示训练用例(样本)的个数,M表示特征数目。
1、一次随机选出一个样本,重复N次, (有可能出现重复的样本)
2、随机去选出m个特征, m <<M,建立决策树
采取bootstrap抽样: 随机抽样训练集、有放回地抽样

逻辑回归—二分类问题
API:sklearn.linear_model.LogisticRegression

性能评估
sklearn.metrics 下的 样本不均衡下的评价二分类模型好坏 .roc_auc_score(y_true, y_score) #0.5很差,0.6可以用,0.7-0.8就算比较好的
计算准确率:.accuracy_score(y_train,y_pred_train) #样本均衡时可信
混淆矩阵:.confusion_matrix(y_true=y_test, y_pred=y_prediat)

线性回归
API—sklearn.linear_model.LinearRegression(fit_intercept=True)—使用的是正规方程优化
sklearn.linear_model.SGDRegressor(loss=“squared_loss”, fit_intercept=True,
learning_rate =‘invscaling’, eta0=0.01)—通过使用SGD优化—梯度下降

查看模型变量:model.coef_ #自变量——权重 model.intercept_ #截距
回归性能评估:均方误差(Mean Squared Error)MSE)评价机制 rmse =( (pred-y)**2).mean()**0.5

线性回归的改进-岭回归
带有L2正则化的线性回归
sklearn.linear_model.Ridge(alpha=1.0)
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)

KMeans—无监督学习—聚类算法
sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’,random_state=21)

性能评估—k值选择

  • 1.肘部法—对簇内误差平方和(inertia_)作图
  • 2.SC系数—轮廓系数—sklearn.metrics.silhouette_score(X, labels)
    model = KMeans(n_clusters=3,random_state=1)
    labels = model.fit_predict(X) 轮廓系数的值是介于 [-1,1],其值越大越好 ,越趋近于1代表内聚度和分离度都相对较优
  • 3.CH系数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值