资讯专栏INFORMATION COLUMN

Kaggle 比赛: 德国信用卡违约数据分析

zombieda / 2413人阅读

摘要:数据描述,我们来看看数据的格式到为个不同类别的特征,为列,一共有条数据,下面列举其中一条当作例子数据处理与数据分析下面展示一下数据处理流程,主要是处理了一下缺失值,然后根据特征按连续型和离散型进行分别处理,使用了里面的包,下面的代码都有

数据描述

German Credit Data, 我们来看看数据的格式,

A1 到 A15 为 15个不同类别的特征,A16 为 label 列,一共有 690条数据,下面列举其中一条当作例子:

A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16
b 30.83 0 u g w v 1.25 t t 01 f g 00202 0 +
Attribute Information:
    A1:    b, a.
    A2:    continuous.
    A3:    continuous.
    A4:    u, y, l, t.
    A5:    g, p, gg.
    A6:    c, d, cc, i, j, k, m, r, q, w, x, e, aa, ff.
    A7:    v, h, bb, j, n, z, dd, ff, o.
    A8:    continuous.
    A9:    t, f.
    A10:    t, f.
    A11:    continuous.
    A12:    t, f.
    A13:    g, p, s.
    A14:    continuous.
    A15:    continuous.
    A16: +,-         (class attribute)
Missing Attribute Values:
37 cases (5%) have one or more missing values.  The missing
values from particular attributes are:

A1:  12
A2:  12
A4:   6
A5:   6
A6:   9
A7:   9
A14: 13
Class Distribution
+: 307 (44.5%)
-: 383 (55.5%)
数据处理与数据分析

下面展示一下数据处理流程,主要是处理了一下缺失值,然后根据特征按连续型和离散型进行分别处理,使用了 sklearn 里面的 LogisticRegression 包,下面的代码都有很详细的注释。

import pandas as pd
import numpy as np
import matplotlib as plt
import seaborn as sns

# 读取数据
data = pd.read_csv("./crx.data")

# 给数据增加列标签
data.columns = ["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", "label"]

# 替换 label 映射
label_mapping = {
    "+": 1,
    "-": 0
}

data["label"] = data["label"].map(label_mapping)

# 处理缺省值的方法
data = data.replace("?", np.nan)

# 将 object 类型的列转换为 float型
data["f2"] = pd.to_numeric(data["f2"])
data["f14"] = pd.to_numeric(data["f14"])

# 连续型特征如果有缺失值的话,用它们的平均值替代
data["f2"] = data["f2"].fillna(data["f2"].mean())
data["f3"] = data["f3"].fillna(data["f3"].mean())
data["f8"] = data["f8"].fillna(data["f8"].mean())
data["f11"] = data["f11"].fillna(data["f11"].mean())
data["f14"] = data["f14"].fillna(data["f14"].mean())
data["f15"] = data["f15"].fillna(data["f15"].mean())

# 离散型特征如果有缺失值的话,用另外一个不同的值替代
data["f1"] = data["f1"].fillna("c")
data["f4"] = data["f4"].fillna("s")
data["f5"] = data["f5"].fillna("gp")
data["f6"] = data["f6"].fillna("hh")
data["f7"] = data["f7"].fillna("ee")
data["f13"] = data["f13"].fillna("ps")

tf_mapping = {
    "t": 1,
    "f": 0
}

data["f9"] = data["f9"].map(tf_mapping)
data["f10"] = data["f10"].map(tf_mapping)
data["f12"] = data["f12"].map(tf_mapping)
# 给离散的特征进行 one-hot 编码
data = pd.get_dummies(data)
from sklearn.linear_model import LogisticRegression

# 打乱顺序
shuffled_rows = np.random.permutation(data.index)

# 划分本地测试集和训练集
highest_train_row = int(data.shape[0] * 0.70)
train = data.iloc[0:highest_train_row]
loc_test = data.iloc[highest_train_row:]

# 去掉最后一列 label 之后的才是 feature
features = train.drop(["label"], axis = 1).columns

model = LogisticRegression()
X_train = train[features]
y_train = train["label"] == 1

model.fit(X_train, y_train)
X_test = loc_test[features]

test_prob = model.predict(X_test)
test_label = loc_test["label"]

# 本地测试集上的准确率
accuracy_test = (test_prob == loc_test["label"]).mean()
print accuracy_test
0.835748792271
from sklearn import cross_validation, metrics

#验证集上的auc值
test_auc = metrics.roc_auc_score(test_label, test_prob)#验证集上的auc值
print test_auc 
0.835748792271

简单使用了一下逻辑回归,发现准确率是 0.835748792271,AUC 值是 0.835748792271,效果还不错,接下来对模型进行优化来进一步提高准确率。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44310.html

相关文章

  • 为什么Kaggle不会让你成为一名出色的数据科学家?

    摘要:缺少投资回报率的分析环节公司正在加大数据科学技能方面的投入。通常,成功的分析项目需要数据科学算法与投资回报率紧密相关。并不涉及这方面的分析,而只专注预测,并不考虑如何把数据科学结果应用于投资回报率。 showImg(https://segmentfault.com/img/bVbmSt7?w=900&h=523); 作者 | Pranay DaveCDA 数据分析师原创作品,转载需授权...

    evin2016 评论0 收藏0
  • Kaggle冠军经验分享丨如何用15个月冲到排行榜的首位

    摘要:你是如何开始参加比赛的正如之前所说的,我一直在阅读大量机器学习和深度学习方面的书籍和论文,但发现很难将我学到的算法应用于小型数据集。机器学习中,你对哪个子领域最感兴趣我对深度学习的各种进步都很感兴趣。 showImg(https://segmentfault.com/img/bVboxKz?w=800&h=600); 作者 Kaggle Team中文翻译 MikaCDA 数据分析师...

    AnthonyHan 评论0 收藏0
  • (转)大数据竞赛平台——Kaggle 入门

    摘要:是玩数据机器学习的开发者们展示功力扬名立万的江湖。上的参赛者将数据下载下来,分析数据,然后运用机器学习数据挖掘等知识,建立算法模型,解决问题得出结果,最后将结果提交,如果提交的结果符合指标要求并且在参赛者中排名第一,将获得比赛丰厚的奖金。 看到了一篇非常好的学习大数据挖掘学习的博文,所以特此转载过来,闲暇时可以用python练练手。Kaggle 是玩数据、机器学习的开发者们展示功力、扬...

    UnixAgain 评论0 收藏0
  • 我是如何在1天内构建一个深度学习模型并进击Kaggle比赛

    摘要:是为结果导向型人群开设的深度学习在线课程。但是最关键的是,我想通过构建简单的深度学习解决方案来实现理论和实践的相结合。我的目标是在一天结束前进入排名的前。我的时间都用于学习库组织数据和评估结果都是一些与深度学习无关的简单流程。 Fast.ai是Jeremy Howard为结果导向型人群开设的深度学习在线课程。我读过很多关于机器学习的书,也参加过不少这方面的课程,但我认为Fast.ai是迄今为...

    shinezejian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<