ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:125.39KB ,
资源ID:9731702      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9731702.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(回归方程数据处理.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

回归方程数据处理.docx

1、回归方程数据处理回归方程数据处理实验姓名: 沟超辉学号:101001106 一、实验目的回归分析是数理统计中的一个重要分支,在工农业生产和科学研究中有着广泛的应用。通过本次实验要求掌握一元线性回归和一元非线性回归。二、实验原理回归分析是处理变量之间相关关系的一种数理统计方法。即用数学的方法,对大量的观测数据进行处理,从而得出比较符合事物内部规律的数学表达式。利用最小二乘估计,得到一元线性回归的回归方程为y =b0+bx式中b0,b为回归方程的回归系数,y代表抗剪强度。求出xi,yi,xi2,y i 2,xiyi,xiyi于是x=1/nxi, y=1/nyilxx =xi2 (xi)2 /nlx

2、y =xiyi (xiyi)/nb= lxy / lxxb0=y-bx三、实验内容及程序结果(一)(1)材料的抗剪强度与材料承受的正应力有关。对某种材料试验的数据如下正应力x/pa26.825.423.627.7抗剪强度y/pa26.527.327.123.623.924.728.126.927.422.625.625.926.322.521.721.425.824.9假设正应力是精确的,求抗剪强度与正应力的线性回归方程 当正应力为24.5pa时,抗剪强度的估计值?程序及运行结果:for i=0X=26.8 25.4 23.6 27.7 23.9 24.7 28.1 26.9 27.4 22.

3、6 25.6; Y=26.5 27.3 27.1 23.6 25.9 26.3 22.5 21.7 21.4 25.8 24.9; N=length(X); lxx=sum(X.*X)-sum(X).2./N; lxy=sum(X.*Y)-sum(X).*sum(Y)/N; b=lxy./lxx; b0=mean(Y)-b.*mean(X); x=(21:0.01:31); y=b.*x+b0; plot(X,Y,b*,x,y,r-)end实验结果:lxx= 43.0467lxy= -29.5333b= -0.6861b0=42.5818材料的抗剪强度与材料承受的正应力关系为:y=42.581

4、8-0.6861x实验内容及程序结果(二)(2)下表给出在不同质量下弹簧长度的观测值(设质量的观测值无误差):质量/g51015202530长度/cm7.258.128.959.9010.911.8 做散点图,观察质量与长度之间是否呈线性关系;求弹簧的刚性系数和自由状态下的长度。程序及运行结果:for i=0X=5 10 15 20 25 30;Y=7.25 8.12 8.95 9.90 10.9 11.8;N=length(X);lxy=sum(X.*Y)-sum(X).*sum(Y)./N;lxx=sum(X.*X)-(sum(X).2)./N;b=lxy./lxx;b0=mean(Y)-

5、b.*mean(X);x=(5:0.01:30);y=b.*x+b0;plot(X,Y,b*,x,y,r-)end以刚性系数k=b=0.1831,自由长度x0=b0=6.2827四、实验小结一元回归是处理两个变量之间的关系,即两个变量x和y之间若存在一定的关系,则可通过实验的方法,分析所得数据,找出两者之间关系的经验公式。假如两个变量之间的关系是线性的就称为一元线性回归,这就是工程上和科研中场遇到的直线拟合问题。Java实现k-means1.数据来源描述本数据集中一共包含600组数据,每一组数据都有60个分量,也就是数据是60维的。数据一共可以分成6个聚类,分别是:1-100 Normal (

6、正常)101-200 Cyclic (循环)201-300 Increasing trend (增加趋势)301-400 Decreasing trend (减少趋势)401-500 Upward shift (上升变化)501-600 Downward shift (下降变化)2.数据预处理由于本数据集的数据维数较多,所以本实验采用了结构体来存储60维的数据,并使用指针来进行对数据的操作,以提高速度。在数据预处理过程中,首先将数据从data文件中读出,后依次存入结构体数组dataset600中。3.k-means聚类算法 k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为

7、 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。(1)算法思路:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然

8、后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。该算法的最大优势在于简洁和快速。算法的关键在于初始中心的选择和距离公式。(2)算法步骤:step.1-初始化距离K个聚类的质心(随机产生)step.2-计算所有数据样本与每个质心的欧氏距离,将数据样本加入与其欧氏距离最短的那个质心的簇中(记录其数据样本的编号)step.3-计算现在每个簇的质心,进行更新,判断新质心是否与原质心相等,若相等,则迭代结束,若不相等,回到step2继续迭代

9、。4.数据挖掘实现的源代码/111060850.cpp KMeans聚类算法/ #include stdafx.h#include#include#include#include#include#includeusing namespace std;const int N=36000; /数据个数const int D=60; /数据维度struct DataSet /用来存储数据的结构体 double argD;const int K=6; /集合个数int *CenterIndex; /质心索引集合/struct DataSet *Center; /质心集合/struct DataSet

10、*CenterCopy;DataSet CenterK; /保存现在的质心DataSet CenterCopyK; /保存上一次迭代中的质心/double *DataSet;int Cluster6N/D; /保存每个簇包含的数据的索引值int *Top; ifstream fin;char ch;string fDataSetN/DD;/*算法描述:kmeans聚类算法采用的是给定类的个数K,将N个元素(对象)分配到K个类中去使得类内对象之间的相似性最大,而类之间的相似性最小 */数据存储在结构体中/函数声明部分void InitData(struct DataSet* dataset);/

11、对数据集进行初始化,从文件中将其读取出后转化为double型依次存入结构体中void InitCenter(struct DataSet* dataset);/初始化质心void CreateRandomArray(int n,int k,int *centerIndex);/随机产生一组索引值,用于初始化质心void CopyCenter(struct DataSet* dataset);/复制保存上一次迭代的质心void UpdateCluster(struct DataSet* dataset);/更新簇void UpdateCenter(struct DataSet* dataset)

12、;/更新质心int GetIndex(struct DataSet* dataset,struct DataSet* centerIndex);/本程序的核心,计算每一数据元素属于哪一个聚类,并返回其索引值void AddtoCluster(int index,int value);/根据索引值将数据元素的索引加入到簇之中void print(struct DataSet* dataset);bool IsEqual(struct DataSet* value1,struct DataSet* value2);/判断现有质心和上一次迭代的质心是否相等double DoubletoString(

13、const char* str);/string转化为double型的函数double Euclidean(struct DataSet* value1,struct DataSet* value2);/计算欧几里得距离函数int main(int argc, char* argv) int Flag=1; double ttime=0,start=0,end=0; start=clock(); DataSet datasetN/D; InitData(dataset); /* for(int i=0;iN/D;i+) for(int j=0;jD;j+) coutdataseti.argj

14、; coutendl;*/ while(Flag) UpdateCluster(dataset); UpdateCenter(dataset); if(IsEqual(Center,CenterCopy) Flag=0; else CopyCenter(dataset); end=clock(); ttime=(double)(end - start) / CLOCKS_PER_SEC; print(dataset); getchar(); return 0;void InitData(struct DataSet* dataset) int i=0,j=0; CenterIndex =new

15、 int sizeof(int)*K; Top =new int sizeof(int)*K; / Cluster =new int* sizeof(int*)*K; /从文件中读入数据,存入fDataSet数组中,此数组为string类型 /然后通过转化成double型存入DataSet数组之中。 cout开始从文件读入数据endl; fin.open(synthetic_control.data); for(i=0;iN/D;i+) for(j=0;jch; fDataSetij=fDataSetij+ch; dataseti.argj=DoubletoString(fDataSetij.

16、c_str(); while(fin.peek()=n|fin.peek()= ) fin.get(); fin.close(); cout数据已读入endl; InitCenter(dataset); UpdateCluster(dataset);void InitCenter(struct DataSet* dataset) int i=0; /产生随即的K个N的不同的序列 CreateRandomArray(N/D,K,CenterIndex); for(i=0;iK;i+) for(int j=0;jD;j+) Centeri.argj = datasetCenterIndexi.ar

17、gj; /coutCenteri endl; CopyCenter(dataset); void CreateRandomArray(int n,int k,int *centerIndex) int i=0,j=0; for(i=0;iK;i+) int a=rand()%n; for(j=0;j=i) centerIndexi=a; else i-; void CopyCenter(struct DataSet* dataset) int i=0; for(i=0;iK;i+) CenterCopyi=Centeri; void UpdateCluster(struct DataSet*

18、dataset) int i=0; int tindex; for(;iK;i+) Topi=0; for(i=0;iN/D;i+) tindex=GetIndex(&dataseti,Center); /tindex是指dataseti属于第tindex个簇 AddtoCluster(tindex,i); /把dataseti加入到所属的簇当中 int GetIndex(struct DataSet* value,struct DataSet* center) int i=0; int index=i; / double min=fabs(value-centeri); double min

19、=Euclidean(value,¢eri); for(i=0;iK;i+) if(Euclidean(value,¢eri)min) index=i; min=Euclidean(value,¢eri); return index;void AddtoCluster(int index,int value) ClusterindexTopindex = value; Topindex+;double DoubletoString(const char* str) double temp = 0.0,wt = 10.0; bool flag = true; int i;

20、 for(i=0 ;i*(str+i)!=0;i+) if(flag&*(str+i)=46) /若遇到小数点则置标志位为false,则后面读入的 flag = false; /char转化为小数形式 else if(flag) /整数部分 temp = (int)(*(str+i)-48)+temp*10; else temp = temp + (int)(*(str+i)-48)/wt; /小数部分 wt = wt*10; return temp;double Euclidean(struct DataSet* value1,struct DataSet* value2) double t

21、emp=0,sum=0; for(int i=0;iargi-value2-argi)*(value1-argi-value2-argi); temp = sqrt(sum); return temp;bool IsEqual(struct DataSet* value1,struct DataSet* value2) int i; for(i=0;iK;i+) for(int j=0;jD;j+) if(value1i.argj!=value2i.argj) return 0; return 1;void UpdateCenter(struct DataSet* dataset) int i

22、=0,j=0; double sum; for(i=0;iK;i+) for(int d=0;dD;d+) sum=0.0; for(j=0;j0) Centeri.argd=sum/Topi; void print(struct DataSet* dataset) int i,j,d; ofstream fout(result.txt); cout=endl; fout=endl; for(i=0;iK;i+) cout第i组:质心为:; for(d=0;dD;d+) coutCenteri.argdt; coutendl; cout数据元素为:n; /- /输入文件中 fout第i组:质心

23、为:; for(d=0;dD;d+) foutCenteri.argdt; foutendl; fout数据元素为:n; for(j=0;jTopi;j+) for(d=0;dD;d+) coutdatasetClusterij.argdt; foutdatasetClusterij.argdt; / foutClusterijt; coutendl; foutendl; coutendl; foutendl; fout 总共用时:ttime 毫秒endl; fout.close(); 5.获取的模型的描述首先,准备数据,对数据进行预处理 ,选用合适的数据结构存储数据元组,然后设定参数,数据的

24、总量N,维度D,聚类类别数量K,然后随机产生K个D维的数据作为质心,计算每个数据与质心距离,并加入所属的簇中,经多次迭代后,质心不变后,得到分类后的结果。6.实验运行结果和实验分析数据挖掘对处理后的数据采用k-means聚类算法,将聚类后的结果输入到文件中(图1),实验的结果:图1结果将数据元组分成了6类,按期每个分量的变化规律分别表示上文所说的6个类别。在文档最后输出聚类分析花费的时间(图2)是1762毫秒。图2由于初始化质心是随机的,所以每次运行聚类分析花费的时间略有不同,本实验采用结构体来存储数据,聚类的操作多应用指针来实现,在选择所属的簇,并加入簇中,加入的是数据的索引值,提高了效率,在一步中如果使用指针指向数据可以进一步提高效率。总体上说算法的运行时间还是比较令人满意。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1