第1章 实践目的及意义
一.实践目的
1、 实现一个小型数据挖掘软件,能够执行数据挖掘任务,并进行可视化展示
2、 获取相关数据,搜索所需数据,或通过爬虫来进行获取,对数据进行整理
3、 数据预处理,如填充缺失值,数据规范化等
4、 数据挖掘,考虑要进行的挖掘任务,选择相应的挖掘算法
5、 结果评估与展示,对挖掘结果进行评价,并将挖掘结果进行可视化展示
二.实践意义
数据挖掘就是从大量繁杂的数据中获取隐含中其中的信息,清理污染和死亡之间的数据,得出两者之间的关系
第2章 数据采集
本章节介绍数据的采集,包括数据采集的领域、数据的来源,如何采集的,采集的数据量有多少等内容
%来自StatLib的数据(ftp stat.cmu.edu/datasets)
%资料来源:McDonald,G.C.和Schwing,R.C.(1973)“回归不稳定性
%估计与死亡有关的空气污染,《技术计量》,第15卷,第463页-
%482号。
%变量顺序:
% PREC Average annual precipitation in inches
% JANT Average January temperature in degrees F
% JULT Same for July
% OVR65 % of 1960 SMSA population aged 65 or older
% POPN Average household size
% EDUC Median school years completed by those over 22
% HOUS % of housing units which are sound & with all facilities
% DENS Population per sq. mile in urbanized areas, 1960
% NONW % non-white population in urbanized areas, 1960
% WWDRK % employed in white collar occupations
% POOR % of families with income < $3000
% HC Relative hydrocarbon pollution potential
% NOX Same for nitric oxides
% SO@ Same for sulphur dioxide
% HUMID Annual average % relative humidity at 1pm
% MORT Total age-adjusted mortality rate per 100,000
第3章 数据预处理
本章节介绍数据预处理,主要对采集到的数据进行分析、预处理,如数据缺失值的填充、规范化、根据特定需要去掉不必要的列等,具体的预处理工作依赖数据本身以及要进行的数据挖掘任务,预处理后的数据要进行简要说明
由于部分属性显示年平均降水量(英寸),一月平均气温(华氏度),月份相同与死亡率无关,将其删除,提取出另11列数据,进行整理。
%1960年65岁或以上SMSA人口的65%
%家庭平均人口
%22岁以上学生完成的教育平均学年数
%住房单元的百分之几是完好的,有所有设施
%1960年城市化地区每平方英里的人口密度
%WWDRK%受雇于白领职业
%收入低于3000美元的贫困家庭
%碳氢化合物相对污染潜力
%氮氧化物的氮氧化物含量相同
%二氧化硫
%MORT每100000人的总年龄调整死亡率
数据预处理部分代码:
with open(file,‘r’, encoding = ‘UTF-8’) as f :
home_team_goals = []
away_team_goals = []
for row in reader :
# TODO
# 将 'Home Team Goals' 、'Away Team Goals'中的每个元素以整型数据分别添加在相应的列表中
home_team_goals.append(row['Home Team Goals'])
away_team_goals.append(row['Away Team Goals'])
#转变数据内形式,str2int
#home_team_goals.append(int(row['Home Team Goals']))
#away_team_goals.append(int(row['Away Team Goals']))
print(home_team_goals[:10])
print(away_team_goals[:10])
第4章 数据挖掘
本章节介绍数据挖掘过程,对已经处理好的数据应用相应的数据挖掘算法,包括算法的设计、实现
NaiveBayes
from sklearn.pipeline import Pipeline
text_clf = Pipeline([('vect', CountVectorizer()), ('tfidf', TfidfTransformer()), ('clf', MultinomialNB())])
text_clf = text_clf.fit(twenty_train.data, twenty_train.target)
print(text_clf)
predicted = text_clf.predict(docs_new)
print(predicted)
import numpy as np
twenty_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)
docs_test =