任务一:金融数据分类模型

综述

此为入门学习机器学习的第一篇博客,记录下…
基于机器学习的数据分析模型的建立,主要分为以下几步:数据获取–>数据预处理–>模型选择–>数据归一化–>模型建立–>模型结果分析

数据获取

由学习小组提供了一份金融数据,就不贴在这里了

数据预处理

由于数据集中有好几十个维度的数据,有些维度的数据,与模型的目标结果相关度不高,因此,手工删除了部分列数据。并且,数据集中,数据格式不完全统一,存在日期格式、中文等等,因此,需要提前将此类数据统计格式化,比如中文的数据,建立字典表,将中文转换成数值。在数据集中,还存在空值等情况,因此,需要对存在空值的列的数据进行补齐。

模型选择

首先,此份数据集的数据量为4700+条,并且,数据分为两类。我们的目的是,在获得新的数据时,利用建立的模型,预测数据的类别。因此,选择了SVM模型(使用的python机器学习库为sklearn)

数据归一化

数据归一化的目的,是将数据集中的数据,都转换成0~1之间的数据
归一化方法如下:

def maxminnorm(array):
    maxcols = array.max(axis=0)
    mincols = array.min(axis=0)
    data_shape = array.shape
    data_rows = data_shape[0]
    data_cols = data_shape[1]
    t = np.empty((data_rows, data_cols))
    for i in range(data_cols):
        t[:, i] = (array[:, i] - mincols[i]) / (maxcols[i] - mincols[i])
    return t

说明:入参为一个二维数组

模型建立

在这里,就直接贴代码了

import pandas as pd
import numpy as np

from sklearn.svm import SVC

# 从excel中读取数据
df = pd.read_excel("D://project//金融数据分析//all_data.xlsx")
data = df.values
# 将数据集与分类结果分别放在不同的对象中
all_data = data[0:4755, 1:32]
all_tag = data[0:4755, 32:33]


# 对all_data进行数据归一化处理
def maxminnorm(array):
    maxcols = array.max(axis=0)
    mincols = array.min(axis=0)
    data_shape = array.shape
    data_rows = data_shape[0]
    data_cols = data_shape[1]
    t = np.empty((data_rows, data_cols))
    for i in range(data_cols):
        t[:, i] = (array[:, i] - mincols[i]) / (maxcols[i] - mincols[i])
    return t


all_data = maxminnorm(all_data)
#从数据集中取出大约70%作为训练集
fit_data = all_data[0:3000]
fit_tag = all_tag[0:3000]
clf = SVC()
#训练模型
model = clf.fit(fit_data, fit_tag.ravel())

#从数据集中取出大约30%作为测试集
test_data = all_data[3000:4755]
test_tag = all_tag[3000:4755]

#利用测试集,获取分类结果
predict_rst = model.predict(test_data)
index = 0
right_predict_count = 0
error_predict_count = 0
#比较模型分类结果与标记好的分类结果的一致性
for val in predict_rst:
    if int(test_tag[index]) == int(val):
        right_predict_count = right_predict_count + 1
    else:
        error_predict_count = error_predict_count + 1
    index = index + 1
#分类一致的数据条数:
print('right:', right_predict_count)
#分类结果不一致的数据条数:
print('error:', error_predict_count)

输出结果:
right: 1290
error: 464

总结

证明前面选择的数据维度或者模型有点问题。有点不太懂,后面参考学习一下其他童鞋的博客,来重新建立分类模型。

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值