2015-02-25 4 views
1

Новое для Python, пытающееся построить линейную регрессию двух списков. Это то, что я до сих пор:Ошибка типа: построение линейной регрессии

#!/usr/bin/python 

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
from numpy import arange,array,ones#,random,linalg 
from pylab import plot,show 
from scipy import stats 
from sys import argv 

a = argv[1] 
b = argv[2] 

list1 = open(a) 
list2 = open(b) 

xi = list1.read().splitlines() 
y = list2.read().splitlines() 

slope, intercept, r_value, p_value, std_err = stats.linregress(xi,y) 

print 'r value', r_value 

line = slope*xi+intercept 
plot(xi,line,'r-',xi,y,'o') 
plt.savefig('myfig') 

Я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "plot.py", line 21, in <module> 
    slope, intercept, r_value, p_value, std_err = stats.linregress(xi,y) 
    File "/export/apps/Python/2.7.2-CentOS6.0/lib/python2.7/site-packages/scipy/stats/stats.py", line 3007, in linregress                       
    xmean = np.mean(x,None)                    
    File "/export/apps/Python/2.7.2-CentOS6.0/lib/python2.7/site-packages/numpy/core/fromnumeric.py", line 2727, in mean                       
    out=out, keepdims=keepdims)                   
    File "/export/apps/Python/2.7.2-CentOS6.0/lib/python2.7/site-packages/numpy/core/_methods.py", line 66, in _mean                        
    ret = umr_sum(arr, axis, dtype, out, keepdims)              
TypeError: cannot perform reduce with flexible type 

ответ

1

Мое предположение было бы, что это не кошерно, чтобы передать список строк в linregress. Попробуйте преобразовать их поплавки первым:

xi = [float(xk) for xk in xi] 
y = [float(yk) for yk in y] 
slope, intercept, r_value, p_value, std_err = stats.linregress(xi,y) 

В зависимости от того, что в xi и y, вы, возможно, придется раздеться несколько пустых строк первой, или в противном случае санировать вход.

+0

спасибо, это сработало! Мне также пришлось очистить пустые струны, как вы упомянули. – EA00

Смежные вопросы