我有 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)