J'écrirai sur la façon de lire les données csv en Python et d'effectuer une régression linéaire et non linéaire. Python ver est 3.7.3. Dans l'environnement Windows10.
Le code est ci-dessous.
◆ Lire les données csv et effectuer une analyse de régression linéaire simple
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
#variable
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#lecture des données csv sur l'axe y
data = pd.read_csv('cp.csv')
y = np.array(data)#Arrangement
y = y.reshape(-1,)#Changement de dimension(2 à 1 dimension)
#Créer l'axe des x de la date
x = pd.date_range('2019-08-30 00:00:00', periods=16, freq='d')
x1=np.arange(16)
x2 = [[x1] for x1 in x1]
#Régression linéaire simple
from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit(x2,y) #Créer un modèle prédictif
print("Coefficient de régression= ", clf.coef_)
print("Section= ", clf.intercept_)
print("Coefficient de décision= ", clf.score(x2,y))
#Création de graphes
ax.plot(x2,y,'b')
ax.plot(x2, clf.predict(x2),'k')
#Spécifiez le format du graphique
plt.xlabel("Days elapsed")#Étiquette de l'axe horizontal
plt.ylabel("plice")#Étiquette verticale
plt.grid(True)#Affichage de l'échelle
plt.tight_layout()#Toutes les parcelles dans une boîte
plt.show()
◆ Lire les données csv et effectuer une analyse de régression simple non linéaire
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
#variable
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#lecture des données csv sur l'axe y
data = pd.read_csv('cp.csv')
y = np.array(data)#Arrangement
y = y.reshape(-1,)#Changement de dimension(2 à 1 dimension)
#Créer l'axe des x de la date
x = pd.date_range('2019-08-30 00:00:00', periods=16, freq='d')
#Ordre de régression non linéaire
x1=np.arange(16)
fit = np.polyfit(x1,y,5)
y2 = np.poly1d(fit)(x1)
#Coefficient de décision
from sklearn.metrics import r2_score
print(r2_score(y,y2))
#Prévoir
x_30 = np.poly1d(fit)(30)
print(x_30)
#Création de graphes
ax.plot(x,y,'bo')
ax.plot(x,y2,'--k')
#Spécifiez le format du graphique
days = mdates.DayLocator()
daysFmt = mdates.DateFormatter('%m-%d')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)
plt.xlabel("date")#Étiquette de l'axe horizontal
plt.ylabel("price")#Étiquette verticale
plt.grid(True)#Affichage de l'échelle
plt.tight_layout()#Toutes les parcelles dans une boîte
plt.show()
Cliquez ici pour une explication technique de l'analyse de régression et une explication détaillée de chaque code (´ ・ ω ・ `) ☟☟☟ https://kgrneer.com/python-numpy-scikit-kaiki/
J'étudie également la régression multiple.
Recommended Posts