c# 模拟线性回归的示例
作者:砖治不服 发布时间:2022-08-26 02:50:49
标签:c#,模拟,线性回归
最近刚开始接触机器学习,在这里使用c#模拟一元线性回归,先上图看效果
因为源码中有一些控件是自己封装的,所以就不上传可运行的程序集了,贴出核心代码,以供参考,如有不对,请多多给予建议
private void ryButtonX1_Click(object sender, EventArgs e)
{
string[] xnum = richTextBox1.Text.Trim().Split(',');//x值
string[] ynum = richTextBox2.Text.Trim().Split(',');//y值
if (xnum.Length != ynum.Length)
{
MessageBox.Show("输入数据有误!");
return;
}
ryTextBoxX1.Text = xnum.Length+"";//个数
decimal xsum = 0;//x值求和
decimal ysum = 0;//y值求和
for(int i = 0; i < xnum.Length; i++)
{
xsum = xsum + ConvertExtend.ToDecimal(xnum[i],0);
ysum = ysum + ConvertExtend.ToDecimal(ynum[i], 0);
}
decimal xAve = ConvertExtend.ToDecimal(xsum / xnum.Length, 0);//x平均值
decimal yAve = ConvertExtend.ToDecimal(ysum / xnum.Length, 0);//y平均值
ryTextBoxX3.Text = string.Format("{0:N}", xAve);//保留两位小数
ryTextBoxX4.Text = string.Format("{0:N}", yAve);
decimal molecule = 0;//分子
decimal Denominator = 0;//分母
for (int i = 0; i < xnum.Length; i++)
{
molecule = molecule + (ConvertExtend.ToDecimal(xnum[i], 0) - xAve) * (ConvertExtend.ToDecimal(ynum[i], 0) - yAve);
Denominator = Denominator+(ConvertExtend.ToDecimal(xnum[i], 0) - xAve) * (ConvertExtend.ToDecimal(xnum[i], 0) - xAve);
}
ryTextBoxX2.Text = string.Format("{0:N}", molecule / Denominator);//斜率
ryTextBoxX5.Text = (yAve - (molecule / Denominator) * xAve)+"";//截距
if (ConvertExtend.ToDecimal(ryTextBoxX5.Text, 0) < 0)
{
ryTextBoxX6.Text = ryTextBoxX2.Text + "X" + ryTextBoxX5.Text;
}else
{
ryTextBoxX6.Text = ryTextBoxX2.Text + "X+" + ryTextBoxX5.Text;
}
#region 画点
chartLabTrend.ChartAreas[0].AxisX.CustomLabels.Clear();
List<decimal?> lx = new List<decimal?>();
List<decimal?> l1 = new List<decimal?>();
for (int i = 1; i <= xnum.Length; i++)
{
CustomLabel label1 = new CustomLabel();
if (xnum[i - 1] != "")
{
label1.Text = ConvertExtend.ToDecimal(xnum[i - 1],0).ToString();
label1.ToPosition = i * 2;
chartLabTrend.ChartAreas[0].AxisX.CustomLabels.Add(label1);
label1.GridTicks = GridTickTypes.Gridline;
lx.Add(i);
if (ynum[i - 1] == null)
{
l1.Add(null);
}
else
{
l1.Add(ConvertExtend.ToDecimal(ynum[i - 1],0));
}
}
}
chartLabTrend.Series[0].Points.DataBindXY(lx, l1);
#endregion
#region 画线
chartLabTrend.ChartAreas[0].AxisX.CustomLabels.Clear();
List<decimal?> lx1 = new List<decimal?>();
List<decimal?> l11 = new List<decimal?>();
for (int i = 1; i <= xnum.Length; i++)
{
CustomLabel label2 = new CustomLabel();
if (xnum[i - 1] != "")
{
label2.Text = ConvertExtend.ToDecimal(xnum[i - 1], 0).ToString();
label2.ToPosition = i * 2;
chartLabTrend.ChartAreas[0].AxisX.CustomLabels.Add(label2);
label2.GridTicks = GridTickTypes.Gridline;
lx1.Add(i);
if (ynum[i - 1] == null)
{
l11.Add(null);
}
else
{
l11.Add(ConvertExtend.ToDecimal(ConvertExtend.ToDecimal(xnum[i - 1],0)*molecule / Denominator
+ ConvertExtend.ToDecimal(ryTextBoxX5.Text,0), 0));
}
}
}
chartLabTrend.Series[1].Points.DataBindXY(lx1, l11);
#endregion
}
来源:https://www.cnblogs.com/cui0614/p/11293793.html


猜你喜欢
- 本文实例为大家分享了OpenGL绘制贝塞尔曲线的具体代码,供大家参考,具体内容如下最终效果图:通过3个点形成一条贝塞尔曲线1. 鼠标问题在使
- 前言最近在开发一个IM项目的时候有一个需求就是,好友搜索功能。即在EditText中输入好友名字,ListView列表中动态展示刷选的好友列
- 本文实例讲述了WinForm实现的图片拖拽与缩放功能。分享给大家供大家参考,具体如下:最近做项目的时候遇到上传施工平面布置图,查看,因为图片
- 1.Quartz是什么?Quartz是一个开源的Java调度框架,可以用来实现在指定的时间或时间间隔触发任务执行的功能。它支持多种方式的作业
- 本文实例实现C#以一个收银付费的小程序演示switch case语法如何使用,读入用户选择,把用户的选择赋值给变量n,再根据用户的输入提示付
- 一、身份证结构和形式在通用的身份证号码有15位的和18位的;15位身份证号码各位的含义:1、1-2位省、自治区、直辖市代码;2、3-4位地级
- resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部Result
- 还记得警匪片上,匪徒们是怎么配合实施犯罪的吗?一个团伙在进行盗窃的时候,总有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙
- 目录1. 简单认识BeanProcessorBeanProcessor的理解一个BeanProcessor的使用实例2. BeanProce
- 断断续续的总算的把android开发和逆向
- 一、项目概述本次项目主要实现了天气预报功能。通过调用天气预报接口来获得天气数据,用LIstView和GridView来搭建每个界面,将查询的
- 调整数组顺序使奇数位于偶数之前1. 题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的
- 本文实例讲述了C# Windows API应用之基于FlashWindowEx实现窗口闪烁的方法。分享给大家供大家参考,具体如下:Windo
- 前言Emmmm…最近在做项目的途中,有遇到一个方法需要接收的参数只有一个或者较少的时候就懒得写实体类去接收,使用spr
- 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异
- 一致性哈希节点的增加和减少,大部分节点的 Hash一致package consistenthashimport ("hash/cr
- 本文为大家分享了JSplitPane的使用方法,供大家参考,具体内容如下1、swing分割窗口控件JSplitPane,用来将窗口分割成两个
- 我们都知道且经常用到 unsigned 关键字,但有没有想过,与此对应的 signed 关键字有啥用?int i = 0;signed in
- 首先看下我们要分析的代码段如下:输出结果如下:输出结果(a).PNG输出结果(b).PNG输出结果(c).PNG括号里是一个二元式:(单词类
- Java高德地图Api的使用使用高德经纬度获取地址信息一些准备用到的常量 /** *