首页 > 解决方案 > 如何绘制二次函数?

问题描述

我有一个关于numpy.

我列出了 csv 包中的数据并使用sklearn绘制数据。

我编译,然后绘制的图表很奇怪。我想绘制为“y = a * x**2 + b * x + c”,柔和的曲线。如何将我的代码更改为具有二次函数?


    data_list = pd.read_csv(r\'과제3_data_list.csv')
    type_list = list(["B2V","B3V","B5V","B8V","B9V","A0V","A2V","A3V","A7V","F0V","F3V","F7V","G0V","G8V","K0V","K2V","K3V","K4V","K5V","K6V"])
    
    def N(x):
        y = list()
        for i in range(len(x)):
            if np.isnan(x[i]) == False:
                y.insert(i,x[i])
        return y

    Type = np.array(type_list).reshape(-1,1)
    standard = np.array(N(np.array(data_list["NO"]))).reshape(-1,1)
    standard_mb = np.array(N(np.array(data_list["mb"]))).reshape(-1,1)
    standard_size = np.array(N(np.array(data_list["mean"]))).reshape(-1,1)
    star_number = np.array(N(np.array(data_list["number"]))).reshape(-1,1)
    star_mbmv = np.array(N(np.array(data_list["mb-mv"]))).reshape(-1,1)
    star_mv = np.array(N(np.array(data_list["mv"]))).reshape(-1,1)
    evas_mbmv = np.array(N(np.array(data_list["evas_mb-mv"]))).reshape(-1,1)
    evas_Mv = np.array(N(np.array(data_list["evas_Mv"]))).reshape(-1,1)
    
    Linear = LinearRegression()
    standard_size_sorted = sorted(standard_size)
    Poly = PolynomialFeatures(degree=2,include_bias=False)
    x_poly = Poly.fit_transform(standard_size)
    Linear.fit(x_poly,standard_mb)
    y = Linear.predict(x_poly)
    
    def Poly_func(x):
        y = Linear.coef_[0][0] * x + Linear.coef_[0][1] * x **2 + Linear.intercept_
        return y
    plt.scatter(standard_size,standard_mb) # this is just x, y value 
    plt.plot(standard_size,Poly_func(standard_size)) # this plot have a trouble. 
    plt.show()
    

标签: pythonnumpyscikit-learn

解决方案


推荐阅读