2016-04-13 46 views
2

benim ders kitabı ile eşleşecek böylece, matplotlib bir çizgi görüntüler kitaptakilerle eşleş. Bana matplotlib bu grafik verirSonuçlarımı Ben ML kitabında boyunca takip ediyorum

import matplotlib.pyplot as plt 
X = [[6], [8], [10], [14], [18]] 
y = [[7], [9], [13], [17.5], [18]] 
plt.figure() 
plt.title('Pizza price plotted against diameter') 
plt.xlabel('Diameter in inches') 
plt.ylabel('Price in dollars') 
plt.plot(X, y, 'k.') 
plt.axis([0, 25, 0, 25]) 
plt.grid(True) 
plt.show() 

:

Önce bana bu kodu verir

enter image description here

Ve bu benim sonuçlarla kadar eşleşir.

from sklearn.linear_model import LinearRegression 
# Training data 
X = [[6], [8], [10], [14], [18]] 
y = [[7], [9], [13], [17.5], [18]] 
# Create and fit the model 
model = LinearRegression() 
model.fit(X, y) 
print 'A 12" pizza should cost: $%.2f' % model.predict([12])[0] 

Ve bu grafiği:

enter image description here

pazı benim koduyla aynı değilse Yani, kötü kokan

Ancak bir sonraki adımda o bana bu kodu verir matplotlib grafik oluşturucu işlevi var. Ben kılavuzları okumak ve kendi yapmaya çalıştı:

from sklearn.linear_model import LinearRegression 
import numpy as np 
import matplotlib.pyplot as plt 


X = [[6], [8], [10], [14], [18]] 
y = [[7], [9], [13], [17.5], [18]] 


model = LinearRegression() 
model.fit(X, y) 

z = np.array([12]).reshape(-1,1) 

print ('A 12" pizza should cost: $%.2f' % model.predict(z)[0]) 
print ("\n" + "_" * 50 + "\n") 

plt.figure() 
plt.title('Pizza price plotted against diameter') 
plt.xlabel('Diameter in inches') 
plt.ylabel('Price in dollars') 
plt.plot(X, y, z, 'k.') 
plt.axis([0, 25, 0, 25]) 
plt.grid(True) 
plt.show() 

Ama bu sadece bana bu garip mavi şey verdi: eğer öyleyse, Python matematik çalışmayı

enter image description here

ben yeniyim kimse Bunu nasıl çözeceğime dair daha fazla bilgi verebilirdi, takdir edecekti.

+0

oldu ki? – adhg

+0

So. Birçok. Hatalar. – Rich

+0

Gerçekten mi? Scikit ile ML'de bir kitap arıyordum; Çok kötü – adhg

cevap

1

Alacağınız bu "tuhaf mavi şey" veri hattı kesimleri bir araya getirilen; Verileriniz size bir puan bulutu sağlayan plt.scatter kullanılarak çizilmelidir.

regresyon çizgisinin Kişisel hesaplama veri kümesi üzerinden bu çizgi çizmek için nasıl tespit edilmiş olmasında yatmaktadır gerekenleri, doğrudur:, sen regresyon çizgisini çizmek için gerekli değerleri ayıklamak gerekir verilerinizi montajından sonra

; Eğer ihtiyaç veri x-ekseni (burada x=0 ve x=25) her iki ucunda iki nokta vardır. Bu iki değerde model.predict'u çağırırsak, ilgili tahminleri elde ederiz. Bu x değerleri, karşılık gelen tahminlerle birleştiğinde, çizgiyi çizmek için kullanacağımız iki nokta oluşturur.

Önce Tahmini değerler y0 ve y25 ayıklamak. Sonra yeşil regresyon çizgi çizmek için puan (0, y0) ve (25, y25) ile plt.plot kullanın. "Scikit-öğrenme ile Mastering Machine Learning" kitabı sizin için yararlı nasıl

from sklearn.linear_model import LinearRegression 
import numpy as np 
import matplotlib.pyplot as plt 


X = [[6], [8], [10], [14], [18]] 
y = [[7], [9], [13], [17.5], [18]] 


model = LinearRegression() 
model.fit(X, y) 

z = np.array([12]).reshape(-1,1) 

print ('A 12" pizza should cost: $%.2f' % model.predict(z)[0]) 
print ("\n" + "_" * 50 + "\n") 

plt.figure() 
plt.title('Pizza price plotted against diameter') 
plt.xlabel('Diameter in inches') 
plt.ylabel('Price in dollars') 
plt.scatter(X, y, z, 'k') 

y0, y25 = model.predict(0)[0][0], model.predict(25)[0][0] 
plt.plot((0, 25), (y0, y25), 'g') 

plt.axis([0, 25, 0, 25]) 
plt.grid(True) 
plt.show() 

enter image description here

+0

hiçbir çizgi ex 'ax.plot ile arsa kullanılarak büyüklük veya renge göre işaretleri (x, y, 'o')' biraz daha iyi performans verir ayrıca – tacaswell

+0

(Noktalardan çok sayıda olduğunda sadece gerçekten önemli) ölçeklendirme sürece, 'tahmin' çağrılarını vektörleştiremez misin? – tacaswell

+1

Tamam, şimdi çalışıyor. Teşekkürler. – Rich