【发布时间】:2020-02-11 01:36:58
【问题描述】:
我正在尝试使用 Jupyter Notebook 绘制逻辑函数。我可以很好地绘制它,但使用 scipy.optimize.curve_fit 的逻辑函数不起作用。它返回直线坐标。
如何绘制逻辑回归线?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
%matplotlib inline
df = pd.read_csv('https://gist.githubusercontent.com/shinokada/76070a0927fa1fac01eeaed298757a26/raw/2707a1bd7cba80613a01a2026abeb9f587dbaee5/logisticdata.csv')
x=df.T.iloc[0]
y=df.T.iloc[1]
def logifunc(x,l,c,k):
return l / (1 + c*np.exp(-k*x))
popt, pcov = curve_fit(logifunc, x, y, p0=[-150,1,1])
print(*popt)
x_data = np.linspace(170,205,num=100)
print(logifunc(x_data, *popt))
plt.scatter(x,y,label='Logistic function')
plt.plot(x_data, logifunc(x_data, *popt), 'r-',label='Fitted function')
plt.title("Logistic")
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(170,210)
plt.ylim(-210,-160)
plt.legend()
plt.show()
【问题讨论】:
标签: scipy logistic-regression scipy-optimize