最小二乘法+.docx

上传人:b****4 文档编号:26835090 上传时间:2023-06-23 格式:DOCX 页数:12 大小:79.41KB
下载 相关 举报
最小二乘法+.docx_第1页
第1页 / 共12页
最小二乘法+.docx_第2页
第2页 / 共12页
最小二乘法+.docx_第3页
第3页 / 共12页
最小二乘法+.docx_第4页
第4页 / 共12页
最小二乘法+.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

最小二乘法+.docx

《最小二乘法+.docx》由会员分享,可在线阅读,更多相关《最小二乘法+.docx(12页珍藏版)》请在冰豆网上搜索。

最小二乘法+.docx

最小二乘法+

 

数据挖掘-最小二乘法预测

 

完成日期2014年4月

实验一 成绩预测

1.实验目的:

学会使用最小二乘法进行数据预测

2.实验内容:

根据给出的一系列期中期末成绩,使用最小二乘法求由学生期中成绩预测学生期末成绩的方程,并建立应用程序实现:

方程的建立算法;绘制X,Y关系曲线图;提供新数据的预测功能。

3.实验环境:

3.1硬件环境

CPU:

P41.8GHz

内存:

4G

硬盘空间:

40GB

3.2软件环境

操作系统:

Windows7旗舰版

开发环境配置:

Eclipse

应用服务器配置:

jdk1.6.0_32

4.程序设计思路及代码编程

程序设计思路:

使用adodc控件连接数据库,在程序运行初始便从表中将原有数据显示在网格中。

界面中设置两个文本框,一个用于输入中期成绩后一个用于输出预测期末成绩。

代码编程:

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JScrollPane;

importjavax.swing.JTable;

importjavax.swing.JTextField;

importjavax.swing.SwingUtilities;

importjavax.swing.UIManager;

importjavax.swing.table.DefaultTableModel;

importorg.dyno.visual.swing.layouts.Constraints;

importorg.dyno.visual.swing.layouts.GroupLayout;

importorg.dyno.visual.swing.layouts.Leading;

//VS4E--DONOTREMOVETHISLINE!

publicclasswindowextendsJFrame{

privatestaticfinallongserialVersionUID=1L;

privateJLabeljLabel0;

privateJTablejTable0;

privateJScrollPanejScrollPane0;

privateJLabeljLabel1;

privateJLabeljLabel4;

privateJLabeljLabel3;

privateJTextFieldjTextField1;

privateJTextFieldjTextField2;

privateJButtonjButton0;

privateJTextFieldjTextField0;

privateJLabeljLabel2;

privateJButtonjButton1;

doublex[]={72,50,81,74,94,86,59,83,65,33,88,81};

doubley[]={84,63,77,78,90,75,49,79,77,52,74,90};

doublez=0;

privatestaticfinalStringPREFERRED_LOOK_AND_FEEL="javax.swing.plaf.metal.MetalLookAndFeel";

publicwindow(){

initComponents();

}

privatevoidinitComponents(){

setLayout(newGroupLayout());

add(getJLabel0(),newConstraints(newLeading(242,10,10),newLeading(12,12,12)));

add(getJLabel4(),newConstraints(newLeading(32,10,10),newLeading(388,10,10)));

add(getJLabel2(),newConstraints(newLeading(26,12,12),newLeading(231,19,10,10)));

add(getJTextField2(),newConstraints(newLeading(234,131,12,12),newLeading(385,28,10,10)));

add(getJLabel1(),newConstraints(newLeading(26,168,12,12),newLeading(46,25,10,10)));

add(getJLabel3(),newConstraints(newLeading(30,10,10),newLeading(326,12,12)));

add(getJButton0(),newConstraints(newLeading(434,10,10),newLeading(325,12,12)));

add(getJScrollPane0(),newConstraints(newLeading(238,200,10,10),newLeading(66,150,12,12)));

add(getJTextField1(),newConstraints(newLeading(234,130,12,12),newLeading(325,30,12,12)));

add(getJTextField0(),newConstraints(newLeading(234,130,12,12),newLeading(264,29,10,10)));

add(getJButton1(),newConstraints(newLeading(431,10,10),newLeading(262,12,12)));

setSize(641,459);

}

privateJButtongetJButton1(){

if(jButton1==null){

jButton1=newJButton();

jButton1.setText("确定");

jButton1.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

doublea=getA(x,y);

doubleb=getB(x,y,a);

StringA=String.format("%.2f",a);

StringB=String.format("%.2f",b);

StringS="y="+A+"*"+"x"+"+"+B;

jTextField0.setText(String.valueOf(S));

}

});

}

returnjButton1;

}

publicstaticdoublegetA(doublex[],doubley[]){

intn=x.length;

return(n*pSum(x,y)-sum(x)*sum(y))

/(n*sqSum(x)-Math.pow(sum(x),2));

}

/**

*计算常量系数

*@paramx

*@paramy

*@parama

*@return

*/

publicstaticdoublegetB(doublex[],doubley[],doublea){

intn=x.length;

returnsum(y)/n-a*sum(x)/n;

}

privatestaticdoublesum(doublec[]){

doubles=0;

for(inti=0;i

returns;

}

privatestaticdoublesqSum(doublec[]){

doubles=0;

for(inti=0;i

returns;

}

privatestaticdoublepSum(doublex[],doubley[]){

doubles=0;

for(inti=0;i

returns;}

privateJLabelgetJLabel2(){

if(jLabel2==null){

jLabel2=newJLabel();

jLabel2.setText("根据最小二乘法计算得到预测方程为:

");

}

returnjLabel2;

}

privateJTextFieldgetJTextField0(){

if(jTextField0==null){

jTextField0=newJTextField();

}

returnjTextField0;

}

privateJButtongetJButton0(){

if(jButton0==null){

jButton0=newJButton();

jButton0.setText("预测");

jButton0.addActionListener(newjava.awt.event.ActionListener(){

publicvoidactionPerformed(java.awt.event.ActionEvente){

z=Integer.parseInt(jTextField1.getText());

doublea=getA(x,y);

doubleb=getB(x,y,a);

StringA=String.format("%.2f",a);

StringB=String.format("%.2f",b);

doublem=a*z+b;

StringM=String.format("%.2f",m);

jTextField2.setText(String.valueOf(M));

}});

}

returnjButton0;

}

privateJTextFieldgetJTextField2(){

if(jTextField2==null){

jTextField2=newJTextField();

}

returnjTextField2;

}

privateJTextFieldgetJTextField1(){

if(jTextField1==null){

jTextField1=newJTextField();

}

returnjTextField1;

}

privateJLabelgetJLabel3(){

if(jLabel3==null){

jLabel3=newJLabel();

jLabel3.setText("输入某位学生的期中成绩:

");

}

returnjLabel3;

}

privateJLabelgetJLabel4(){

if(jLabel4==null){

jLabel4=newJLabel();

jLabel4.setText("该学生期末成绩预测值为:

");

}

returnjLabel4;

}

privateJLabelgetJLabel1(){

if(jLabel1==null){

jLabel1=newJLabel();

jLabel1.setText("课程数据库中的学生成绩:

");

}

returnjLabel1;

}

privateJScrollPanegetJScrollPane0(){

if(jScrollPane0==null){

jScrollPane0=newJScrollPane();

jScrollPane0.setViewportView(getJTable0());

}

returnjScrollPane0;

}

privateJTablegetJTable0(){

if(jTable0==null){

jTable0=newJTable();

jTable0.setModel(newDefaultTableModel(newObject[][]{{"72","84",},{"50","63",},{"81","77",},{"74","78",},{"94","90",},

{"86","75",},{"59","49",},{"83","79",},{"65","77",},{"33","52",},{"88","74",},{"81","90",},},newString[]{

"期中成绩X","期末成绩Y",}){

privatestaticfinallongserialVersionUID=1L;

Class

>[]types=newClass

>[]{Object.class,Object.class,};

publicClass

>getColumnClass(intcolumnIndex){

returntypes[columnIndex];

}

});}

returnjTable0;

}

privateJLabelgetJLabel0(){

if(jLabel0==null){

jLabel0=newJLabel();

jLabel0.setText("最小二乘法预测学生期末成绩");

}

returnjLabel0;

}

privatestaticvoidinstallLnF(){

try{

StringlnfClassname=PREFERRED_LOOK_AND_FEEL;

if(lnfClassname==null)

lnfClassname=UIManager.getCrossPlatformLookAndFeelClassName();

UIManager.setLookAndFeel(lnfClassname);

}catch(Exceptione){

System.err.println("Cannotinstall"+PREFERRED_LOOK_AND_FEEL

+"onthisplatform:

"+e.getMessage());}

}

publicstaticvoidmain(String[]args){

installLnF();

SwingUtilities.invokeLater(newRunnable(){

@Override

publicvoidrun(){

windowframe=newwindow();

frame.setDefaultCloseOperation(window.EXIT_ON_CLOSE);

frame.setTitle("window");

frame.getContentPane().setPreferredSize(frame.getSize());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);}

});

}

}

5.程序实现

初始运行界面:

输入一期中成绩,点击预测:

如输入期中成绩89,执行为:

6.实验总结:

通过这次实验,我更加深入的了解了最小二乘法的运算过程,结合着java编程语言,把整个最小二乘法表达出来。

在实验过程中运用了窗体,使得人机交互变得更加简洁、方便,也顺便复习了一下窗体的相关知识。

当然在实验过程中也发现了自己的不足,因为学习的知识有限,没能画出一元线性图形来,不过希望在以后的学习可以更加完善自己,争取把程序做的更加完善。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

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

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