猿问

为什么没有打印行并且估计系数为 NaN?

代码使用 将数据集导入代码numpy.genfromtxt,然后尝试通过散点图绘制回归线。然而,散点图打印而线不打印。还有估计系数输出NaN。问题出在哪里?


import numpy as np 

import matplotlib.pyplot as plt 

from numpy import genfromtxt


def estimate_coef(x, y): 

    # number of observations/points 

    n = np.size(x) 


    # mean of x and y vector 

    m_x, m_y = np.mean(x), np.mean(y) 


    # calculating cross-deviation and deviation about x 

    SS_xy = np.sum(y*x) - n*m_y*m_x 

    SS_xx = np.sum(x*x) - n*m_x*m_x 


    # calculating regression coefficients 

    b_1 = SS_xy / SS_xx 

    b_0 = m_y - b_1*m_x 


    return(b_0, b_1) 


def plot_regression_line(x, y, b): 

    # plotting the actual points as scatter plot 

    plt.scatter(x, y, color = "m", 

               marker = "o", s = 30) 


    # predicted response vector 

    y_pred = b[0] + b[1]*x 


    # plotting the regression line 

    plt.plot(x, y_pred, color = "g") 


    # putting labels 

    plt.xlabel('x') 

    plt.ylabel('y') 


    # function to show plot 

    plt.show() 


def main(): 

    # observations 

    x = genfromtxt('/Users/divyanshuvarma/Downloads/graduate-admissions/Admission_Predict.csv', delimiter=',',usecols=(1))

    y = genfromtxt('/Users/divyanshuvarma/Downloads/graduate-admissions/Admission_Predict.csv', delimiter=',',usecols=(8))



    # estimating coefficients 

    b = estimate_coef(x, y) 

    print("Estimated coefficients:\nb_0 = {}  \

          \nb_1 = {}".format(b[0], b[1])) 


    # plotting regression line 

    plot_regression_line(x, y, b) 


if __name__ == "__main__": 

    main() 


阿波罗的战车
浏览 128回答 2
2回答

慕丝7291255

问题出在 csv 文件上。Numpy.genfromtxt 还读取了 csv 文件的第一行,其中包含后续行中的值的名称(标签)。所以我使用 skip_header=1 来阻止它读取字符串值。

慕工程0101907

有一个部门b_1 = SS_xy / SS_xx的功能estimate_coef。你打印出值SS_xx,也许它是零?希望有帮助。
随时随地看视频慕课网APP

相关分类

Python
我要回答