2017-09-30 11 views
0

폴리 노미 얼을리스트에 저장하고 싶지만 목록에 추가하면 변수 x가 손실되고 계수가 생깁니다. 지금poly1D() 함수에서부터 폴리 노미 널을리스트에 저장하기

import numpy as np 
from numpy import random 
from pylab import * 
from sklearn.metrics import r2_score 

np.random.seed(2) 
pageSpeeds = np.random.normal(3.0, 1.0, 1000) 

# purchaseAmount function (non-linear) 
purchaseAmount = np.random.normal(50.0, 10.0, 1000)/pageSpeeds 

x = np.array(pageSpeeds) 
y = np.array(purchaseAmount) 

polyfitInit = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0} 
polyforms = [] 
for c in polyfitInit: 
    z = np.poly1d(np.polyfit(x, y, c)) 
    r2 = r2_score(y, z(x)) 
    polyfitInit[c] = r2 
    polyforms.append(z) 

print polyforms 

Ouptut :

[poly1d ([-9.04306562, 46.68709008), poly1d ([3.73263241, -31.78596189, 77.53159067] ...]

원하는 출력 : [-9.043 X + 46.69, 3.73263241x^2 + -31.78596189x + 77.53159067 ...]

고마워

답변

0

poly1d이 클래스의 객체를 만든다.

In [153]: p = np.poly1d([1,2,3]) 
In [156]: type(p) 
Out[156]: numpy.lib.polynomial.poly1d 

이 클래스의 repr은 사용자가 가지고있는 문자열입니다. str 목록의 사용자 polyforms

In [162]: alist = [p, p] 
In [163]: alist 
Out[163]: [poly1d([1, 2, 3]), poly1d([1, 2, 3])] 
In [164]: print(alist) 
[poly1d([1, 2, 3]), poly1d([1, 2, 3])] 

인쇄는 repr 형태가 아닌 str을 표시합니다, 당신은

In [159]: repr(p) 
Out[159]: 'poly1d([1, 2, 3])' 
In [160]: str(p) 
Out[160]: ' 2\n1 x + 2 x + 3' 
In [161]: print(p) 
    2 
1 x + 2 x + 3 

가 목록에 이들 중 몇 가지를 넣어 원하는 문자열입니다.

표시 문자열과 실제 개체는 구분됩니다. 내 alist은 실제 poly1d 개체 목록입니다. 문자열 표현의 목록이 아닙니다. 변수 xpoly1d 개체의 일부가 아닙니다. poly1d

의 핵심 속성이나 데이터는 coef

In [165]: p.coef 
Out[165]: array([1, 2, 3]) 

입니다 그리고 당신은리스트의 각 요소에 대한 평가를 수행 할 수 있습니다

In [172]: [q(.5) for q in alist] 
Out[172]: [4.25, 4.25]