中国互联网金融发展迅速,2014年是中国互联网金融起步的一年,但在短短的一年时间内,互联网金融创业者们融资额度一再创高,雨后春笋般涌现出各类互联网金融产品让用户眼花缭乱,随着创业门槛的降低,在即将到来的2015年,互联网金融必将在中国掀起热潮。
在当下互联网金融持续升温的今天,作为一个毫无金融背景的工科生,也希望能够搭上互联网金融这趟快速列车,跑在同龄人的前面。在一份偶然的实习机会中,有幸接触了这一领域,也把自己的一部分收获与大家分享,使用朴素贝叶斯算法对互联网金融的新闻进行分类。
分类属于监督学习,进行分类前需要有固定分类的训练集,那么第一步就是对互联网金融新闻划分类别。从传统金融意义上来讲,对新闻可划分为:银行、证券以及保险。此三类作为传统金融的三大领域。接下来就是划分互联网金融的类别,互联网金融的三大热门形式是网贷、众筹和支付。根据金融常出现的另外三个词:投资、理财以及虚拟货币中的比特币,再分出三类。所以训练集中的新闻总共分为9类:银行、证券、保险、网贷、众筹、支付、投资、理财、比特币。
训练集数据的获取自然是通过爬虫从网站中爬取新闻正文,然后提取关键词进行判断,关键词提取可以采用tf-idf算法进行提取,找到所爬正文中属于我们要找的9类的文章,然后为这些文章建立向量,在这里向量的构建并没有采取针对整篇文章的词语建立的方式,而是针对提取的20个关键字来建立向量(这里涉及到朴素贝叶斯算法的一些背景知识,在这里不做过多赘述,参考文章前可以了解一下相关背景知识),既能够基本反映出文章内容,又起到降维的作用。训练集数据收集完成之后,就是具体使用朴素贝叶斯算法实现的过程。直接贴出代码以供参考:
'''
@author: lecheng
2014/11/15
'''
import os
import sys
from numpy import *
from data import get_content
from slicewords import extract_keywords
import db
#保险 0
#比特币 1
#理财 2
#投资 3
#网贷 4
#银行 5
#证券 6
#支付 7
#众筹 8
def get_data_by_type(type):
'''从数据库中获取某类型的新闻关键字列表'''
table = db.db['m0_content']#m0_content是存训练集数据的mongo数据库
word_lists = []
contents = table.find({'type':type})
for content in contents:
keywords = extract_keywords(content.get('content'))
word_lists += [keywords]
return word_lists
def load_data():
'''数据初始化'''
dataset = [[],[]]
word_list = get_data_by_type("保险")
for i in word_list:
dataset[0] += [i]
dataset[1] += [0]
print('load baoxin success')
word_list = get_data_by_type("比特币")
for i in word_list:
dataset[0] += [i]
dataset[1] += [1]
print('load bitebi success')
word_list = get_data_by_type("理财")
for i in word_list:
dataset[0] += [i]
datas