机器学习案例实战之信用卡欺诈检测——收获的技术

本文主要记录小白我自己在这个小项目中收获的技术点,
有一篇博客下写的特别好,这里直接附上链接https://blog.csdn.net/huahuaxiaoshao/article/details/85232089

1.#中文字体显示 

plt.rc('font', family='SimHei', size=13)

2. pandas中的.value_counts(),很像python自带的Count(),但.value_counts()可以对Series里面的每个值进行计数并且排序,如果想用升序排列,可以加参数ascending=True,如果想得出的计数占比,可以加参数normalize=True

如:count_class = pd.value_counts(data['Class'], sort=True).sort_index()

3.数据归一化操作中,可以直接StandardScaler().fit_transform(要归一化的数据)

4.pandas中好像啥都要.values  没有括号,才可以喂给算法去fit

如:sta.fit_transform(data['Amount'].values.reshape(-1, 1))   ###如果这里不加.values 就会报错

5.

# data.ix[:,:]
# .ix弃用。请使用
# .loc用于基于标签的索引或

6.

下采样

目标:获得分类太多的数据和分类太少的数据相同数量的训练数据
方法:从分类多的数据中,随机取出与分类少数量数量相同的数据,然后进行混合,
进而进行下面的操作...

7.

过采样

用了SMOTE算法

from imblearn.over_sampling import SMOTE

其中有k近邻算法的思想,比如找到k个相近的邻居,将他们与随机找的x_i的距离排序,如果要将少数量的某一样本点增加5倍,

则取前5个相近的邻居,然后利用公式:x_new = x_i + rand(0,1)*(x~ - x_i)  其中x~分别去之前得到的5个样本,进而达到扩大样本数量的目的

8.

交叉验证

KFold

fold = KFold(要交叉验证数据集的个数,分为几份(默认3),是否每次验证要洗牌(默认shuffle=False))实例化

fold是一个可迭代对象,可以用枚举的方法获取其,索引和值

for iteration, indices in enumerate(fold, start=1):

  pass

这里的iteration是第几次交叉验证的次数

indices是  “要交叉验证数据集的个数”,在该次交叉验证被划分的两部分(训练集+验证集)

9.

召回率和精准率

from sklearn.metrics import recall_score

recall = TP/(TP+FN)   = recall_score(y_真实值,y_预测值)

precision = TP/(TP+FP)

10.

混淆矩阵

from sklearn.metrics import confusion_matrix

confusion_matrix(y_真实值,y_预测值)

11.

画图

plt.imshow(cm, interpolation='nearest', cmap=cmap)

cm存储图像,本项目中传的是混淆矩阵,其他默认值就行。。我也不太会。。。

12.

正则化惩罚cost function中所求得θ不要太大

l1 l2都可以 l2更平缓,l1有去除权重很小的特征的作用

min(loss + C*正则化)

13.

对逻辑回归(线性关系--->映射成逻辑值,sigmoid函数)设置不同的阈值,进而平衡其召回率和精准率













.ix is deprecated. Please use .loc for label based indexing or .iloc for positional indexing
翻译过来就是:

.ix弃用。请使用

.loc用于基于标签的索引或

.iloc用于位置索引

猜你喜欢

转载自www.cnblogs.com/kongweisi/p/10597055.html