金融大数据分析-练习四

金融大数据分析-练习四

1、要求

任务内容:

现有一组数据命名‘salary.xlsx’的数据文件,里面存放了从 1994 年的人口普查数据库中提 取的数据。内容具有多个字段:age、workclass、fnlwgt、education-num、marital-status、 occupation、relationship、race、sex、hours-per-week、native-country、salary。数据预测任务是确定一个人的年收入(salary 字段)是否超过 50K。

你的任务如下:

1、读取数据,并对数据进行清洗,这里的数据由于数据量庞大且空数据占比较小,所以直接选择去除空值数据。

2、数据切分,我们需要切分出对我们预测建模有意义的数据字段,需要考虑是否所有列都需要切分出来(如:fnlwgt、race、sex、native-country等)。

3、将数据分为x和y,x为所有的数据内容,y为最终分类。并且需要分为训练集和预测集,我们以后1000行数据作为预测数据进行切分。

4、分别使用‘支持向量机’、‘逻辑回归’和‘神经网络’三种机器学习算法对数据进行训练和预测。创建三种算法对象时,使用固定参数:支持向量机(kernel='linear');逻辑回归(max_iter=500, solver='lbfgs', C=0.5);神经网络(max_iter=2000, solver='lbfgs', alpha=0.01,hidden_layer_sizes=(11,5), random_state=1)。

5、对比三种算法的结果,获取三种算法的模型准确率和预测准确率。

数据描述:

2、代码

import pandas as pd
# 支持向量机
from sklearn.svm import SVC
# 逻辑回归
from sklearn.linear_model import LogisticRegression
# 神经网络
from sklearn.neural_network import MLPClassifier
# 准确率
from sklearn.metrics import accuracy_score
# 1、读取数据,并对数据进行清洗,这里的数据由于数据量庞大且空数据占比较小,所以直接选择去除空值数据。
# 读取数据
data = pd.read_excel('E:\金融大数据分析\salary.xlsx')
# 数据清洗,去除空值
data.dropna(inplace=True)
# 2、数据切分,我们需要切分出对我们预测建模有意义的数据字段,需要考虑是否所有列都需要切分出来(如:fnlwgt、race、sex、native-country等)。
# 删除无意义的字段数据(native-country、fnlwgt),保留其他对年收入有意义的字段
data.drop(columns=['native-country'], inplace=True)
data.drop(columns=['fnlwgt'], inplace=True)
# 3、将数据分为x和y,x为所有的数据内容,y为最终分类。并且需要分为训练集和预测集,我们以后1000行数据作为预测数据进行切分。
X = data.iloc[:,0:-1]
y = data.iloc[:,-1]
# 划分训练集和测试集,其中测试集为最后1000行数据
# 训练集
X_train = X.iloc[:-1000]
y_train = y.iloc[:-1000]
# 测试集
X_test = X.iloc[-1000:]
y_test = y.iloc[-1000:]
# 4、分别使用‘支持向量机’、‘逻辑回归’和‘神经网络’三种机器学习算法对数据进行训练和预测。创建三种算法对象时,使用固定参数:支持向量机(kernel='linear');逻辑回归(max_iter=500, solver='lbfgs', C=0.5);神经网络(max_iter=2000, solver='lbfgs', alpha=0.01,hidden_layer_sizes=(11,5), random_state=1)。
# 使用支持向量机算法
svm_model = SVC(kernel='linear')
svm_model.fit(X_train, y_train)
svm = svm_model.score(X_train,y_train)
svm_predict = svm_model.predict(X_test)
svm_accuracy = accuracy_score(y_test, svm_predict)
# 使用逻辑回归算法
lr_model = LogisticRegression(max_iter=500, solver='lbfgs', C=0.5)
lr_model.fit(X_train, y_train)
lr = lr_model.score(X_train,y_train)
lr_predict = lr_model.predict(X_test)
lr_accuracy = accuracy_score(y_test, lr_predict)
# 使用神经网络算法
clf_model = MLPClassifier(max_iter=2000, solver='lbfgs', alpha=0.01, hidden_layer_sizes=(11,5), random_state=1)
clf_model.fit(X_train, y_train)
clf = clf_model.score(X_train,y_train)
clf_predict = clf_model.predict(X_test)
clf_accuracy = accuracy_score(y_test, clf_predict)
# 5、对比三种算法的结果,获取三种算法的模型准确率和预测准确率。
# 输出结果
print("支持向量机模型准确率:", svm)
print("支持向量机预测准确率:", svm_accuracy)
print("逻辑回归模型准确率:", lr)
print("逻辑回归预测准确率:", lr_accuracy)
print("神经网络模型准确率:", clf)
print("神经网络预测准确率:", clf_accuracy)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值