#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
#define l 16
float average(float temp[], float size);//均值函式
float sum(float temp[], int size);//求和函式
float yu_ce(float w, float x, float b);//預測函式
int main()
{
float
bb,//輸入值
x, //面積的平均值
y, //價格的平均值
z, //分子之和
k, //分母之和
w, //權重值
b,//誤差值
aa;//預測值
float mian_ji[l] = {139.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21};//面積(單位平方)
float jia_ge[l] = {145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30};//價格(單位萬元)
float result_fenzi[l] = {0};
float result1_fenmou[l] = { 0 };
x = average(mian_ji,l);//面積的均值
//cout << x << "x的均值" << endl;
y = average(jia_ge,l);//價格的均值
//cout << y << "y的均值" << endl;
//分子的累加之和
for (int ii=0;ii<l;ii++)
{
//yy[i] = mian_ji[i] - y;
//xx[i] = jia_ge[i] - x;
//result[i]=yy[i] * xx[i];
result_fenzi[ii] = (jia_ge[ii] - y)* (mian_ji[ii] - x);//計算(x-x均值)×(y-y均值)
//cout << result_fenzi[ii] << "分子" << endl;
}
z=sum(result_fenzi,l);
//cout << z << "分子之和的值" << endl;
//分母的累加之和
for (int i1=0;i1<l;i1++)
{
result1_fenmou[i1] = (mian_ji[i1] - x) * (mian_ji[i1] - x);//計算(x-x均值)的平方
//cout << result1_fenmou[i1] << "分母" <<endl;
}
k = sum(result1_fenmou, l);
//cout << k << "分母之和的值" << endl;
w = z / k;//權重值
b = y - (z/k) * x;//誤差值
//cout << w << "w的值" << endl;
//cout << b << "b的值" << endl;
//預測價格
cout << "請輸入面積:" << endl;
cin >> bb;
cout << endl;
aa = yu_ce(w, bb, b);
cout << "預測值是:" << setiosflags(ios::fixed) << setprecision(2) << aa << endl;//控制精度
system("pause");
return 0;
}
float average(float temp[], float size)//計算平均值函式
{
float sum = 0, aver;
for (int iii = 0; iii < size; iii++)
{
sum += temp[iii];
}
return sum / size;
}
float sum(float temp[],int size)
{
float sum = 0, aver;
for (int i11 = 0; i11 < size; i11++)
{
sum += temp[i11];
}
return sum ;
}
float yu_ce(float w,float x,float b)
{
//y = wx + b;
float y;//預測值
y = w * x + b;
return y;
}
代碼中的用的樣本資料如下圖:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205007.html
標籤:其他
