如果我们有这么多 csv 文件,有什么方法可以动态或使用循环获取 r 平方值



我有 200 到 220 个 csv 文件,我想为每个 csv 文件计算 r 平方值,每次我都打开 csv 文件并计算 r 平方,然后再次打开另一个 csv 文件。这是我正在使用的代码:

import pandas
import scipy
import numpy
from sklearn.preprocessing import RobustScaler
url = "file1.csv"
dataframe = pandas.read_csv(url)
dataframe
array=dataframe.values
X=array[:,4:5]
Y=array[:,3:4]
scalerx = RobustScaler()
x_scaled = scalerx.fit_transform(X)
x_scaled
scalery = RobustScaler()
y_scaled = scalery.fit_transform(Y)
y_scaled
a=x_scaled
b=y_scaled
from sklearn.linear_model import LinearRegression
linreg=LinearRegression()
linreg.fit(a,b)
#LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
print linreg.intercept_
#[ 0.30611686]
print linreg.coef_
#[[-0.21568568]]
y_pred=linreg.predict(a)
r2=linreg.score(a,b)
print(r2)

这是我保存在 overall.py 中的代码然后我在命令提示符下运行以下命令:$python overall.py 然后我得到了单个 csv 文件数据的 r2 值。然后我再次需要使用文件2.csv,文件3.csv,....等等,任何提示如何同时为所有CSV文件获取R-square?

将代码放在函数中,并对多个文件运行函数。 例如:

import os
for f in os.listdir(os.curdir):
   if f.endswith('.csv'):
       my_function(f)

所以在你的情况下:

import os
import pandas
import scipy
import numpy
from sklearn.preprocessing import RobustScaler
def my_function(url):
    dataframe = pandas.read_csv(url)
    dataframe
    array=dataframe.values
    X=array[:,4:5]
    Y=array[:,3:4]
    scalerx = RobustScaler()
    x_scaled = scalerx.fit_transform(X)
    x_scaled
    scalery = RobustScaler()
    y_scaled = scalery.fit_transform(Y)
    y_scaled
    a=x_scaled
    b=y_scaled
    from sklearn.linear_model import LinearRegression
    linreg=LinearRegression()
    linreg.fit(a,b)
    #LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
    print linreg.intercept_
    #[ 0.30611686]
    print linreg.coef_
    #[[-0.21568568]]
    y_pred=linreg.predict(a)
    r2=linreg.score(a,b)
    print(r2)
if __name__ == "__main__":
    for f in os.listdir(os.curdir):
       if f.endswith('.csv'):
           my_function(f)

相关内容

  • 没有找到相关文章

最新更新