机器学习实验《多源数据集成、清洗和统计》 C++ 实现
题目: 某班有同学100人,现要从两个数据源汇总学生数据。第一个数据源在数据库中,第二个数据源在txt文件中,两个数据源课程存在缺失、冗余和不一致性,请用C/C++/Java程序实现对两个数据源的一致性合并以及每个学生样本的数值量化。
· 数据库表:ID (int), 姓名(string), 家乡(string:限定为Beijing / Guangzhou / Shenzhen / Shanghai), 性别(string:boy/girl)、身高(float:单位是cm))、课程1成绩(float)、课程2成绩(float)、…、课程10成绩(float)、体能测试成绩(string:bad/general/good/excellent);其中课程1-课程5为百分制,课程6-课程10为十分制。
· txt文件:ID(string:6位学号),性别(string:male/female)、身高(string:单位是m))、课程1成绩(string)、课程2成绩(string)、…、课程10成绩(string)、体能测试成绩(string:差/一般/良好/优秀);其中课程1-课程5为百分制,课程6-课程10为十分制。
参考:
数据库中Stu表数据
ID Name City Gender Height C1 … C10 Constitution
1 Sun Beijing boy 160 87 9 good
2 Zhu Shenzhen girl 177 66 8 excellent
… … … … … … … … …
student.txt中
ID Name City Gender Height C1 。。。 C10 Constitution
202001 Sun Beijing male 1.80 87 。。。 9 good
202003 Tang Hanghai male 1.56 91 。。。 10 general
… … … … … … … … …
两个数据源合并后读入内存,并统计:
1.学生中家乡在Beijing的所有课程的平均成绩。
2.学生中家乡在广州,课程1在80分以上,且课程10在9分以上的男同学的数量。
3.比较广州和上海两地女生的平均体能测试成绩,哪个地区的更强些?
4.学习成绩和体能测试成绩,两者的相关性是多少?
提示:
参考数据结构:
Student{int id;
string name;
vector<float> data;
}
可能用到的公式:
均值公式
协方差公式
z-score规范化
相关性
思路: 用C++简单实现读入,然后计算一下就行了
相关公式:
mean(A):数组A的平均值,std(A):标准差(协方差开方)
//(暂时未完成,有空补充)
暂存代码:
/*------- From IsOreo2XSXXSSSSS220 7 rZZW@BSXXrr;:..,i7XSSS22a2a2SSZ8Zr , X02MS:i:::::X,
r;rX7X7X7XXZr MM2 iZBXr;;;rirS2XXXS22SSXSXSaa; .SMM. 22Zi... .i
77SXXXSXSXS8 2MMMMMa .,. .,;XaX7rS2880Z0Zr :ZMMMMMZ .Bari;i:,::7,
8Za2S2SSXSa2 @MMMMMMMBi:. ,2; XMMMMM@MM@ Xai7ri,:::7i
8ZZZZZZ2SS8r .MM@@MMM0, SMMMM@@@@@MM ,S;Xr,,,,:7:
8ZZZZZZZ228: XMM@MMMi MMMMM@@@@W@MM. BM@7...,i7:
0Z8ZZZZ2SS0 8MMMMM ,. i8MMMMM@@@MMi 2MW7.:X22ZX
ZZZZa2SSSaZ @MMMM, ,. SMMMM@MMM7 rM0XX2Z222S
ZaZZa2aaaaZ MMMX: ,. rMMMMMMX .M8Z22222aS
0808ZZZ8ZZ8 MS .i ;@MMMX 0ZS222222S
@WWZZ88ZZa0:: : : rMM2 Za2S2S222X
WB0ZZ0ZZZZWX i ,: . 87 ZZS2S2S22S
02aaZZ880Bi ; ....::. ZBaS2S222S
Z2aZZ8Z0B: , i. ..i:ii:.. SW8aaS222
0ZZaa2ZB: .r;Z. : ,:.ii SMB82Sa2
B8ZZSaB; :X ;M:r; i. ,:.: 8@ZaZaa
Z2ZaZ@Z :MX BM; 2i, :, ..:,:XSi,... 02ZZa2
Z228@M 0MMBMMMi , ii,:...,:i:i,rr,.7MMMM0aX, ,: 70Za2S
aX0@MX X@@W@@WBi i ,,i:,,. X; X@BBWZZ0X .: 0aS2S
88WMM :aWWWWWZ0. : , M8 0W80BBS2B7 ,, 2Z222
B0WM0 :ZZZZZa82 i : XMM@Z0M@000B022Z0. ; ;822S
i7Z@X :r2aZ2XZ: i. ; 2WWW@WW0B0BB8Sa2B: ;. ,ZSSS
X.r8; :7X7XX7, :: ; 70BWBWBBBWB822riZ, ; ,WZaX
WMZ., i7rri i, :. 8aZBBB00ZZSa7iiX : ,MMW0
X8r : ,,. ., ; i8a7S2a222S;i;X :. :MM@0
i;i : . ,, .; .2ri;;r;;ir7r :, XMMWZ
Xra , .i i. .ii;;;;;: :. 2MW@B
7r2Sr ,:,. .:, 00BB0
27SSB: ,,:::::,. ;, XB088Z
X7XX2a ;i 0ZZ888
7i7r7ai ;: XaXXXXr
S7XS7SZ 7 r02aS22X
ZX0aSX2X r :Ba2S2SaX
X7XS22r2r .: i: :ZXXrX77X7
7ir;;;;rar :. :i, ia77XS208B2
7r7X7XXXXZX i .rr. ;ZX72Za2a80B
XrXXXXXXXXZai ;, ii .7S77r7rr;r;ri
XrXXXX7XXXX2ZS. ii.. .: rSXrr;;;rrrrXX7
XrX7XXXXSSSSSaZ7, ... ,:XXX7X7XXX7S2ZZa2
X7XSXXXX7r;r;7XXSX: ,;7i.,,....:rXr77i:,
rirr;i;:i:;;rrXX7S2X7i, . ,,7XSXr;;;;;;;r;ri,
;:;7X2S2SSX7ii,:ir7X2S7X;i,. . . . . ..:i7rii;irXXSXr;;rrr;r7X7X7;
aXaa2Xrii:ii;7X0M87,. ,:;rXrr;;:,.... ..,,:i;;7;i,. ,iX7r;, ..,:iiri
7;r7;ii7SZZ0BW@Z: ..,,,...,:i;Xrr;;i: .;r. .,:ii:,, . ... ;27ii:,.,,:ii
X;7;;;2Z08ZZ0BX .,,:,,.. ;WMMMZ7:. ,r2a2aSSr;;77X;
SXXSXa0B88ZZaB, :7Z@MMMMMMMMMMM0aSX7Xrrrrr7XS22Z8ZS77r777XSXSS:
r.;i;ii;rrXXX2Z7:.. ..:r7a80BB08SX;rrri;;rr7XSXX2aX777rrrr;i,:,:,:,,.. .:
*/#pragma GCC optimize(3)
#pragma comment(linker,"/STACK:1024000000,1024000000")
#include <bits/stdc++.h>#define ull unsigned long long
#define ll long long
#define inf 2100000000
#define endl '\n'
#define pii pair<int,int>
#define pll pair<long long,long long>
#define MP make_pair
#define eps 1e-6const double pi=3.14159265358;
const int maxn=3e5+10;
const int mod=1e4+7;using namespace std;struct student {int id;string name;string sex;string hometown;double height;string stamina; //体侧成绩vector<double>data; // 课程1-10的成绩
}database[maxn],datatxt[maxn],dataall[maxn];
int databasecnt=0,datatxtcnt=0;
int allcnt=0;//读取数据库
void readdatabase(string path) {ifstream infile;path+=".data;"infile.open(path);assert(infile.is_open());string s;string tmp;getline(infile,s);int len=s.length();int cnt=0;for(int i=0;i<len;i++) {if(s[i]==' ') {tmp="";if(cnt==0) {database[cnt].id=cnt+1;}else if(cnt==1) {database[cnt].name=tmp;}else if(cnt==2) {database[cnt].sex=tmp;}else if(cnt==3) {database[cnt].hometown=tmp;}else if(cnt==4) {database[cnt].height=stringturn(tmp);}else if(cnt>=5&&cnt<=16) {database[cnt].data.push_back(stringturn(tmp));}}else if(i==len-1) {tmp+=s[i];database[cnt++].stamina=tmp;break;}else {tmp+=s[i];}}databasecnt=cnt;infile.close();
}int pw(int x) {int ans=1,t=10;while(x) {if(x&1) ans*=t;t*=t;x>>=1;}return ans;
}//string转int
int stringturn(string s) {int ans=0;for(int i=s.length();i>=0;i--) {ans+=(s[i]-'0')*pw(s.length()-i-1);}return ans;
}//读取txt
void readtxt(string path) {ifstream infile;path+=".data";infile.open(path);assert(infile.is_open());string s;string tmp;getline(infile,s);int len=s.length();int cnt=0;for(int i=0;i<len;i++) {if(s[i]==',') {tmp="";if(cnt==0) {datatxt[cnt].id=cnt+1;}else if(cnt==1) {datatxt[cnt].name=tmp;}else if(cnt==2) {datatxt[cnt].sex=tmp;}else if(cnt==3) {datatxt[cnt].hometown=tmp;}else if(cnt==4) {datatxt[cnt].height=stringturn(tmp);}else if(cnt>=5&&cnt<=16) {datatxt[cnt].data.push_back(stringturn(tmp));}}else if(i==len-1) {tmp+=s[i];datatxt[cnt++].stamina=tmp;break;}else {tmp+=s[i];}}datatxtcnt=cnt;infile.close();return;
}//合成数据库与txt
void compose() {allcnt=0;for(int i=0;i<databasecnt;i++) {dataall[allcnt++]=database[i];}for(int i=0;i<datatxtcnt;i++) {dataall[allcnt++]=datatxt[i];}
}//输出家乡在北京的学生所有课程平均成绩
void Print1() {vector<double>coursesum;double numofbeijing=0;for(int i=0;i<10;i++) {coursesum.push_back(0);}for(int i=0;i<allcnt;i++) {if(dataall[i].hometown=="Beijing") {numofbeijing++;for(int j=0;j<10;j++) {coursesum[i]+=dataall[i].data[j];}}}cout<<"The students's average grades(10 courses) who live in Beijing : "<<endl;for(int i=0;i<coursesum.size();i++) {cout<<coursesum[i]/numofbeijing<<" ";}cout<<endl;
}//输出家乡在广州,课程1在80分以上,且课程10在9分以上的男同学数量
void Print2() {int ans=0;for(int i=0;i<allcnt;i++) {if(dataall[i].hometown=="Guangzhou"&&dataall[i].data[0]>=80&&dataall[i].data[9]>=9) {ans++;}}cout<<"The numbers of male students who live in Guangzhou and course1's grades greater than 80 and course10's grades greater than 9 is : ";cout<<ans<<endl;
}int turn(string s) {if(s=="bad") return 60;if(s=="normal") return 70;if(s=="great") return 80;if(s=="excellent") return 90;return 0;
}//比较广州与上海两地女生的平均体能成绩,这里假设"bad"=60,"normal"=70,"great"=80,"excellent"=90;
//如果广州强返回0,如果上海强返回1
bool cmp1() {double GZgrades=0,SHgrades=0;double gznum=0,shnum=0;for(int i=0;i<allcnt;i++) {if(dataall[i].hometown=="Guangzhou"&&dataall[i].sex=="female") {gznum++;GZgrades+=turn(dataall[i].stamina);}if(dataall[i].hometown=="Shanghai"&&dataall[i].sex=="female") {shnum++;SHgrades+=turn(dataall[i].stamina);}}return SHgrades>GZgrades;
}void Print3() {if(cmp1()) {cout<<"Shanghai's female student's grades of physical fitness test is greater than Guangzhou";}else {cout<<"Guangzhou's female student's grades of physical fitness test is greater than Shanghai";}cout<<endl;
}//求学习成绩和体测成绩的相关性int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);string txtpath,databasepath;cout<<"输入txt路径:";cin>>path;cout<<"输入数据库路径:";cin>>databasepath;readdatabase(databasepath);readtxt(path);compose();Print1();Print2();Print3();return 0;
}
机器学习实验《多源数据集成、清洗和统计》 C++ 实现相关推荐
- Azure机器学习实验
实验背景 [实验简介] Azure Machine Learning(简称"AML")是微软在其公有云Azure上推出的基于Web使用的一项机器学习服务,机器学习属人工智能的一个分 ...
- 【机器学习PAI实践二】人口普查统计
产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2 一.背景 感谢大家关注玩转数据系列文章,我们希 ...
- Azure机器学习入门(三)创建Azure机器学习实验
在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...
- 【机器学习实验】用Python进行机器学习实验
概要 本文是用Python编程语言来进行机器学习小实验的第一篇.主要内容如下: 读入数据并清洗数据 探索理解输入数据的特点 分析如何为学习算法呈现数据 选择正确的模型和学习算法 评估程序表现的准确性 ...
- 机器学习实验二---决策树python
机器学习实验二---决策树python 一.了解一下决策树吧 决策树基本流程 信息增益 决策树的优缺点 二.数据处理 三.决策树的构建 计算给定数据集的香农熵 按照给定特征划分数据集 选择最好的数据划 ...
- Android开发之带你轻松集成友盟统计
友盟统计是什么呢?为什么要集成他呢? 当我们需要获取自己写的软件的装机量和用户使用信息时,这时我们可以集成友盟统计. 首先到友盟统计中注册账号什么的就不废话了,直接看创建项目: 在个人中心中的管理里面 ...
- 机器学习实验中的编程技术(part3)--numpy
学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的逻辑运算 numpy中的指数及对数 numpy中的集合操作 取唯一 检测数组中是否包含某些元素 集合的交,并,差,异或 ...
- 机器学习实验中的编程技术(part2)--numpy
学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的数据截断 四舍五入 其他 numpy中的和 积 差 梯度 机器学习实验中的编程技术 numpy中的数据截断 四舍五入 # ...
- 机器学习实验中的编程技术(part1)--numpy
学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的算术运算 加法 除法 取倒数 取余 取负数 绝对值 numpy中的三角函数与反三角函数 机器学习实验中的编程技术 num ...
- 还在用Tensorboard?机器学习实验管理平台大盘点
文 | SisyphusBJ 源 | Pytorch Lightning wandb.ai comet.ml neptune.ai allegro trains mlflow guild.ai sac ...
最新文章
- Python基础入门之解释器安装
- 入门训练 Fibonacci数列 c语言
- 第三次学JAVA再学不好就吃翔(part106)--字符流
- linux查看 idt日志,实现RCP的日志管理
- 学生选课系统,第二版
- 10.Linux/Unix 系统编程手册(上) -- 时间
- textbox wpf 居中_C# + WPF: TextBox中的光标定位问题
- plotplayer s/w hevc(h265)解码 问题
- 山西省计算机二级考试试题,2011山西省计算机等级考试试题 二级C试题考资料
- 暴雪禁止中国玩家参加炉石赛事/ 谷歌推迟发放年终奖/ 推特蓝V增加包年套餐…今日更多新鲜事在此...
- properties文件
- 一个效率很高的汉字转拼音首字母的函数(未测试)
- XILINX FPGA OV5640 摄像头驱动(一)
- ckeditor提交时判断是否为空
- SpringCloud系列之熔断器Hystrix
- python函数的特性_深入Python函数编程的一些特性
- 越是穷人,就越需要大数据
- 动词ing基本用法_那些动词后加动词的ing形式?
- android_secure写权限,android - android.permission.WRITE_SECURE_SETTINGS,系统应用程序中的权限拒绝 - 堆栈内存溢出...
- 恺撒密码 python