C# 线性回归函数,离散点斜率

2 篇文章 0 订阅

二元一次,多元多次方程算法(用于离散点求取整体斜率):

/// <summary>
/// 二维笛卡尔坐标系坐标
/// </summary>
public struct Point
{
    public double X;
    public double Y;
    public Point(double x, double y)
    {
        X = x;
        Y = y;
    }
}

/// <summary>
/// 对一组点通过最小二乘法进行线性回归
/// </summary>
/// <param name="parray"></param>
public Point LinearRegression(Point[] parray)
{

    Point tempPoint = new Point();
    //点数不能小于2
    if (parray.Length < 2)
    {

        Console.WriteLine("点的数量小于2,无法进行线性回归");
        return tempPoint;
    }

    //求出横纵坐标的平均值
    double averagex = 0, averagey = 0;
    foreach (Point p in parray)
    {
        averagex += p.X;
        averagey += p.Y;
    }
    averagex /= parray.Length;
    averagey /= parray.Length;
    //经验回归系数的分子与分母
    double numerator = 0;
    double denominator = 0;
    foreach (Point p in parray)
    {

        numerator += (p.X - averagex) * (p.Y - averagey);
        denominator += (p.X - averagex) * (p.X - averagex);

    }
    //回归系数b(Regression Coefficient)
    double RCB = numerator / denominator;
    //回归系数a
    double RCA = averagey - RCB * averagex;
    //string result= "y=" + RCA.ToString("F3") + "x+" + RCB.ToString("F3");
    tempPoint.X = RCB;
    tempPoint.Y = RCA;
    return tempPoint;
    //Console.WriteLine("回归系数A: " + RCA.ToString("0.0000"));
    //Console.WriteLine("回归系数B: " + RCB.ToString("0.0000"));
    //Console.WriteLine(string.Format("方程为: y = {0} + {1} * x",
    //  RCA.ToString("0.0000"), RCB.ToString("0.0000")));
    //剩余平方和与回归平方和
    //double residualSS = 0;  //(Residual Sum of Squares)
    //double regressionSS = 0; //(Regression Sum of Squares)
    //foreach (Point p in parray)
    //{
    //  residualSS +=
    //    (p.Y - RCA - RCB * p.X) *
    //    (p.Y - RCA - RCB * p.X);
    //  regressionSS +=
    //    (RCA + RCB * p.X - averagey) *
    //    (RCA + RCB * p.X - averagey);
    //}
    //Console.WriteLine("剩余平方和: " + residualSS.ToString("0.0000"));
    //Console.WriteLine("回归平方和: " + regressionSS.ToString("0.0000"));
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在C#中,我们可以通过编写代码实现离散离散改变颜色的功能。具体的实现方法如下: 1.首先,我们需要定义一个离散表,并将数据填充到离散表中。这可以通过C#语言中的数据结构来实现,例如使用数组或列表来存储数据。 2.然后,我们需要为离散表中的每个设置相应的颜色。这可以通过使用C#中的图形库来实现,例如System.Drawing命名空间中的Color类。 3.接下来,当离散表的数据发生改变时,我们可以使用事件来捕捉这些改变并更新相应的颜色。这可以通过使用C#中的事件机制实现,例如定义一个事件并将其与相应的处理程序关联。 4.最后,我们可以使用C#中的图形库将离散表的数据和颜色绘制在屏幕上,如使用Graphics类的DrawEllipse方法。 总之,C#离散离散改变颜色的实现方法比较简单,通过使用数据结构、图形库和事件机制,可以实现离散表的动态渲染,并为离散设置不同的颜色以便区别。 ### 回答2: 使用C#编程语言,实现离散表中离散的颜色改变可通过以下步骤实现: 1. 首先,需要获取离散表中的所有离散对象,可以使用循环遍历的方式获取。 2. 然后,根据需要修改的颜色,设置离散对象的Color属性,例如将所有离散的颜色修改为红色: foreach (DataPoint point in Chart1.Series["Series1"].Points) { point.Color = Color.Red; } 3. 最后,需要将修改后的离散对象重新绑定到离散表中,以更新显示。可以使用如下代码: Chart1.Series["Series1"].Points.DataBindXY(xValues, yValues); 其中,xValues和yValues是离散的横坐标和纵坐标数组。 通过以上步骤,即可实现离散离散的颜色改变。需要注意的是,必须在离散表绑定数据之后再修改离散的颜色,否则无法生效。 ### 回答3: 在C#中,要实现离散表的离散改变颜色,可以使用图表控件中的Series属性。首先需要在图表控件中添加一个series,然后对离散进行设置,在Series中设置的颜色即可。 具体的实现步骤如下: 1. 在Visual Studio中创建一个Windows Form应用程序。 2. 在工具箱中拖动一个图表控件到窗体中。 3. 在代码中添加以下命名空间: using System.Windows.Forms.DataVisualization.Charting; 4. 在Form.Load事件中添加以下代码,创建一个series并添加数据: private void Form1_Load(object sender, EventArgs e) { Series series = new Series("离散"); series.Points.AddXY(1, 3); series.Points.AddXY(2, 4); series.Points.AddXY(3, 5); series.Points.AddXY(4, 6); series.Points.AddXY(5, 7); series.Points.AddXY(6, 8); chart1.Series.Add(series); } 5. 在series的Points属性中,设置的颜色: series.Color = Color.Blue; 6. 然后可以为不同的设置不同的颜色。例如,要将第一个和最后一个设置为红色,可以使用以下代码: series.Points[0].Color = Color.Red; series.Points[series.Points.Count - 1].Color = Color.Red; 7. 最后,为了避免离散重叠,可以调整chart1.ChartAreas[0].AxisX.Interval属性,这将在X轴上设置之间的间隔。 通过以上步骤可以轻松实现C#离散表的离散改变颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无熵~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值