Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
3.3 kB
1
Indexable
Never
"""
1. Wczytać dataset diabetis (https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_
diabetes.html, https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset).
"""
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split


diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)



"""
2. Wybrać ze wczytanego zbioru danych kolumny (zmienne) pod indeksami 0, 2, 3. Zgodnie z dokumentacją są
to zmienne: age age in years, bmi body mass index, bp average blood pressure.
"""


diabetes_Xage = diabetes_X[:, np.newaxis, 0] #age
diabetes_Xbmi = diabetes_X[:, np.newaxis, 2] #bmi
diabetes_Xbp = diabetes_X[:, np.newaxis, 3] #bp
diabetes_X = diabetes_X[:,[0,2,3]]
"""
3. Narysować 3 wykresy punktowe, pokazujące jak zmienna zależna (y) zależy od zmiennych niezależnych (3
poprzednio wybrane kolumny z X).
"""

#age
plt.scatter(diabetes_Xage, diabetes_y)
plt.title('AGE')
plt.xlabel('X - AGE')
plt.ylabel('Y')
plt.show()

#bmi
plt.scatter(diabetes_Xbmi, diabetes_y)
plt.title('BMI')
plt.xlabel('X - BMI')
plt.ylabel('Y')
plt.show()

#bp
plt.scatter(diabetes_Xbp, diabetes_y)
plt.title('BP')
plt.xlabel('X - BP')
plt.ylabel('Y')
plt.show()




"""
4. Podzielić zbiór danych na dane uczące i testujące w proporcji 80% danych uczących i 20% danych testowych.
"""

# split 80 uczące 20 testowych

diabetes_X_train, diabetes_X_test, diabetes_y_train, diabetes_y_test = train_test_split(
    diabetes_X, diabetes_y, train_size=0.2, random_state=0)

"""
5. Utworzyć obiekt regresji liniowej i nauczyć go na danych uczących (https://scikit-learn.org/stable/
modules/generated/sklearn.linear_model.LinearRegression.html).
"""
#obiekt
regr = linear_model.LinearRegression()

regr.fit(diabetes_X_train, diabetes_y_train)

"""
6. Wykonać predykcje na danych testowych i obliczyć błąd średniokwadratowy pomiędzy rzeczywistymi danymi a
predykcją (https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.
html).
"""
# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)

#coefficients
print("Coefficients: \n", regr.coef_)
#mean squared error
print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))
#coefficient of determination
print("Coefficient of determination: %.2f" % r2_score(diabetes_y_test, diabetes_y_pred))

"""
7. Sprawdzić, czy dodanie innych zmiennych poza tymi wybranymi może polepszyć jakość regresji (zmniejszyć
błąd na danych testowych). W celu tego proszę powtórzyć w pętli punkty 2-6 wybierając poza zmiennymi
wskazanymi w punkcie 2 jedną z pozostałych zmiennych (inną w każdej iteracji).
"""



"""
8. Proszę wykonać raport w postaci PDF. W raporcie proszę umieścić wyniki poszczególnych etapów wykonywania zadania,
jak to wygenerowane wykresy, otrzymane wartości błędów na zbiorze testowym, informacje
o tym czy inne zmienne poprawiają czy pogarszają jakość regresji, wyniki błędu średniokwadrotowego dla
innych zestawów zmiennych.
"""