Python实战项目:详解银行用户流失预测

项目介绍

这次我们要学习的是银行用户流失预测项目,首先先来看看数据,数据分别存放在两个文件中,’Churn-Modelling.csv’里面是训练数据,’Churn-Modelling-Test-Data.csv’里面是测试数据。下面是数据内容:

数据来源于国外匿名化处理后的真实数据

RowNumber:行号
CustomerID:用户编号
Surname:用户姓名
CreditScore:信用分数
Geography:用户所在国家/地区
Gender:用户性别
Age:年龄
Tenure:当了本银行多少年用户
Balance:存贷款情况
NumOfProducts:使用产品数量
HasCrCard:是否有本行信用卡
IsActiveMember:是否活跃用户
EstimatedSalary:估计收入
Exited:是否已流失,这将作为我们的标签数据

首先先载入一些常用模块

import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn import neighbors
from sklearn.metrics import classification_report
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import LabelEncoder

然后用numpy读入数据,因为数据中有字符串类型的数据,所以读入数据的时候dtype设置为np.str

train_data = np.genfromtxt('Churn-Modelling.csv',delimiter=',',dtype=np.str)
test_data = np.genfromtxt('Churn-Modelling-Test-Data.csv',delimiter=',',dtype=np.str)

数据切分,表头不需要,第0到第倒数第2列为数据,最后1列为标签

x_train = train_data[1:,:-1]
y_train = train_data[1:,-1]
x_test = test_data[1:,:-1]
y_test = test_data[1:,-1]

第0,1,2列数据数据分别为编号,ID,人名,这三个数据对最后的结果应该影响不大,所以可以删除掉。

x_train = np.delete(x_train,[0,1,2],axis=1)
x_test = np.delete(x_test,[0,1,2],axis=1)

删除掉0,1,2列数据后剩下的1,2列数据为国家地区和性别,都是字符型的数据,需要转化为数字类型的数据才能构建模型

labelencoder1 = LabelEncoder()
x_train[:,1] = labelencoder1.fit_transform(x_train[:,1])
x_test[:,1] = labelencoder1.transform(x_test[:,1])
labelencoder2 = LabelEncoder()
x_train[:,2] = labelencoder2.fit_transform(x_train[:,2])
x_test[:,2] = labelencoder2.transform(x_test[:,2])

由于读取数据的时候用的是np.str类型,所以训练模型之前要先把string类型的数据变成float类型

x_train = x_train.astype(np.float32)
x_test = x_test.astype(np.float32)
y_train = y_train.astype(np.float32)
y_test = y_test.astype(np.float32)

然后做数据标准化

sc = StandardScaler()
x_train = sc.fit_transform(x_train)
x_test = sc.transform(x_test)

构建KNN模型并检验测试集结果

knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(x_train, y_train)
predictions = knn.predict(x_test)
print(classification_report(y_test, predictions))
          precision    recall  f1-score   support

     0.0       0.80      0.95      0.87       740

     1.0       0.69      0.33      0.45       260

micro avg 0.79 0.79 0.79 1000

macro avg 0.75 0.64 0.66 1000

weighted avg 0.77 0.79 0.76 1000

构建MLP模型并检验测试集结果

mlp = MLPClassifier(hidden_layer_sizes=(20,10) ,max_iter=500)
mlp.fit(x_train,y_train)
predictions = mlp.predict(x_test)
print(classification_report(y_test, predictions))
            precision    recall  f1-score   support

     0.0       0.82      0.96      0.88       740

     1.0       0.77      0.38      0.51       260

micro avg 0.81 0.81 0.81 1000

macro avg 0.79 0.67 0.70 1000

weighted avg 0.80 0.81 0.79 1000

项目打包

关注公众号:Python数据分析和人工智能

后台回复:1214

作者介绍

  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Python项目实战:使用PySpark对大数据进行分析 PySpark是一个基于Python的Spark API,它提供了一种分布式计算框架,可以用于处理大规模数据集。使用PySpark,可以轻松地对大数据进行分析和处理,从而提高数据分析的效率和准确性。 在实际项目中,使用PySpark进行大数据分析可以帮助我们更好地理解数据,发现数据中的规律和趋势,从而为业务决策提供更加准确的依据。同时,PySpark还可以帮助我们处理数据中的异常值和缺失值,提高数据的质量和可靠性。 总之,使用PySpark进行大数据分析是一项非常有价值的技能,可以帮助我们更好地应对现代数据分析的挑战。 ### 回答2: 随着互联网的飞速发展,数据的产生量越来越大,如何处理数据是一个非常重要的问题。Python是目前主流的编程语言之一,尤其是在数据科学、机器学习、人工智能等领域广受欢迎。pyspark是Apache Spark的Python API,它提供了一个基于内存的分布式计算框架,可以处理大规模数据集,并且具有高性能、易于使用、可扩展的特点。 使用pyspark对大数据进行分析,我们可以使用Spark的分布式内存计算引擎,在集群中并行计算数据,并为大数据应用提供高效的解决方案。pyspark提供了丰富的API,可以实现对大数据的探索性分析、数据处理、特征工程、模型训练和预测等操作。 在进行大数据分析前,首先需要创建SparkSession对象,这个对象是通往Spark的入口。接下来可以读取数据集,并进行一系列的数据清洗、转换等操作。常用的数据处理操作包括:数据过滤、数据映射、数据排序、数据聚合等。 在进行特征工程时,pyspark提供了大量的内置函数和转换操作,如Tokenizer、StopWordsRemover、VectorAssembler、StringIndexer等。可以使用这些函数将原始数据集转换为模型可用的特征向量。 对于大规模的数据集训练机器学习模型,pyspark提供了分布式的算法库,如线性回归、逻辑回归、决策树、随机森林、支持向量机、Gradient-Boosted Trees等。可以选择合适的算法库进行数据建模和预测,同时也可以根据需要扩展定制算法库。 pyspark的强大功能让我们能够处理超大规模数据集,从而能够快速、高效地进行大数据分析。因此,学习pyspark对于数据科学家和数据工程师来说变得越来越重要,对于数据分析和挖掘等领域也有着巨大的应用前景。 ### 回答3: 随着大数据时代的到来,大数据分析已经成为了一个趋势。在处理大量数据时,传统的数据处理方式已经无法满足需求。而pyspark则成为了处理数据的良好工具之一。pyspark是一个基于Apache Spark框架的Python API。采用大数据技术将数据分布式并行处理,具有高效、快速、可靠的特点。在处理数据时,pyspark能使数据处理过程变得更加便捷和高效。 使用pyspark进行大数据分析时,需要先了解spark框架的运行方式。Spark框架是由一个 Driver程序和多个Executor程序组成。Driver程序负责任务分配和控制,而Executor程序负责具体的数据分析。在Driver程序中,通过pyspark编写代码进行数据处理和分析。数据处理的过程包括数据清洗、转换、过滤和计算等步骤。而在数据分析时,采用了三个重要的API:RDD、DataFrame和DataSet。 其中RDD是一种数据结构,表示“弹性分布式数据集”。RDD的特点是不可变性、分布式、容错性和操作性等。通过RDD来重复读取数据,对数据集进行处理和分析等操作。DataFrame是一种分布式数据表,类似于关系型数据库的表结构。通过DataFrame能够处理一些非结构数据。DataSet则是RDD和DataFrame的结合体,用于处理更加复杂的数据分析,如机器学习等。 在实现pyspark的大数据分析时,需要掌握一些重要的指令和API。常用的指令包括map、filter、reduce、flatMap等。这些指令能够帮助我们进行数据清洗、转换和过滤等操作。同时,pyspark还提供了一些高级的API如join、groupByKey、reduceByKey等。这些API可以用于处理和统计大量数据。 总之,pyspark的出现为我们提供了一种高效、便捷的方法来处理数据。在实际的应用中,我们可以利用pyspark进行数据清洗、转换、过滤和计算等操作,实现数据的高效分析和处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qin_bf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值