Czy moglibyście pomóc w finalizacji oraz weryfikacji projektu https://gitlab.portal.futurecollars.com/dariusz_jenek/trial-version/-/blob/main/NewVersionOfProject.py?
Prośba o pomoc w finalizacji oraz weryfikacji projektu
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
Co znaczy pomóc w finalizacji oraz weryfikacji? Jak masz jakiś problem to opisz i wklej kod. Wejście na link wymaga logowania.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 195
Aktualny stan projektu
# Importing packages
# Exploratory Data Analysis packages
import pandas as pd
import numpy as np
# Plotting packages
import matplotlib.pyplot as plt # Zmiana z 'import matplotlib as plt' na 'import matplotlib.pyplot as plt'
#plt.use('Agg') # To ustawienie, jeśli chcesz używać 'Agg' backend do rysowania w tle
import seaborn as sns
import pandas.testing as tm # Zakomentowany, jeśli nie używasz
from pandas.plotting import scatter_matrix
# Machine Learning packages
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, silhouette_score, classification_report , confusion_matrix
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN
import joblib
import pickle
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
# Scientifical packages
import scipy.cluster.hierarchy as sch
from scipy import stats
#Graphical User Interface packages
import tkinter as tk
#Graphical packages
# Loading dataset
loan = pd.read_csv('loan_data.csv', low_memory=False)
print(loan.head())
print(loan.describe())
# Checking for any missing values
print(loan.isna().sum())
print(loan.keys())
print(loan.values)
print(loan.shape)
print(loan.groupby('loan_status').size())
# Exploratory Data Analysis
# Tworzenie wykresu typu boxplot dla wybranych kolumn
loan.plot(kind='box', subplots=True, layout=(12, 10), sharex=False, sharey=False)
# histograms using pandas plot
loan.hist()
plt.show() # Prawidłowe wywołanie metody show na matplotlib.pyplot
# Multivariate Plots
# Relationships between each attribute
sns.pairplot(loan)
scatter_matrix(loan)
plt.show()
plt.figure(figsize =(20,10))
sns.heatmap(loan.corr(), annot =True)
sns.countplot(loan['loan_status'])
#Machine Learning Models
# Split-out validation dataset
array = loan.values
x = array[:,0:4]
y = array[:,4]
x
y
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
x_train
y_train
x_test
y_test
#Logistic Model Regression
logistic_model = LogisticRegression(random_state = 0)
logistic_model.fit(x_train, y_train)
y_predict =logistic_model.predict(x_test)
y_predict
cm = confusion_matrix(y_test,y_predict)
print(classification_report(y_test,y_predict))
print("accuracy :" , logistic_model.score(x_test,y_test))
# Individual Prediction
#mysample = np.array([4.9,3.0,1.4,0.2])
#ex1 = mysample.reshape(1,-1)
#Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
#logistic_model.predict(ex1)
joblib.dump(logistic_model, 'logit_model_iris.pkl')
# save the model to disk
filename = 'finalized_model.sav'
pickle.dump(logistic_model, open(filename, 'wb'))
# some time later...
# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.score(x_test, y_test)
ex2 = np.array([6.2,3.4,5.4,2.3]).reshape(1,-1)
logistic_model.predict(ex2)
#KNN, Decision Tree and SVM Models
knn = KNeighborsClassifier()
dtree = DecisionTreeClassifier()
svm = SVC()
# Fit the model
knn_model = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
knn_model.fit(x_train, y_train)
y_pred = knn.predict(x_test)
print("accuracy :" , knn.score(x_test,y_test))
k = 5
neigh6 = KNeighborsClassifier(n_neighbors = k).fit(x_train,y_train)
yhat6 = neigh6.predict(x_test)
#print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh6.predict(x_train)))
#print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat6))
Ks = 10
mean_acc = np.zeros((Ks-1))
std_acc = np.zeros((Ks-1))
ConfustionMx = [];
for n in range(1,Ks):
#Train Model and Predict
neigh = KNeighborsClassifier(n_neighbors = n).fit(x_train,y_train)
yhat=neigh.predict(x_test)
# mean_acc[n-1] = metrics.accuracy_score(y_test, yhat)
std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0])
mean_acc
plt.plot(range(1,Ks),mean_acc,'g')
plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc + 1 * std_acc, alpha=0.10)
plt.legend(('Accuracy ', '+/- 3xstd'))
plt.ylabel('Accuracy ')
plt.xlabel('Number of Nabors (K)')
plt.tight_layout()
plt.show()
print( "The best accuracy was with", mean_acc.max(), "with k=", mean_acc.argmax()+1)
k = 8
neigh6 = KNeighborsClassifier(n_neighbors = k).fit(x_train,y_train)
yhat6 = neigh6.predict(x_test)
#print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh6.predict(x_train)))
#print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat6))
# save the model to disk
joblib.dump(knn, 'knn_model_iris.pkl')
dtree.fit(x_train, y_train)
print("accuracy :" , dtree.score(x_test,y_test))
# save the model to disk
joblib.dump(dtree, 'dtree_model_iris.pkl')
svm.fit(x_train, y_train)
print("accuracy :" , svm.score(x_test,y_test))
# save the model to disk
joblib.dump(svm, 'svm_model_iris.pkl')
Czy aktualny stan projektu ma jakikolwiek sens?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
Jeśli dla Ciebe ma sens to OK, dla mnie nie ma żadnego, bo nie znam danych i nie wiem czemu model ma służyć. Jak chcesz coś więcej, to je udostępnij.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2384
Koledze zapewne chodzi o problem klasyfikacji dla zbioru danych IRIS -> https://www.kaggle.com/datasets/uciml/iris/data
Patrząc na ten kod, to jest to losowe copy&paste z ćwiczenia różnych modeli i kod coś tam realizuje, ale nie wiadomo po co i czy na temat.
@darek88 Pytania testowe:
- dlaczego interesuje Cię accuracy, a nie np. f1-score albo recall?
- co wynika z analizy eksploracyjnej? Ile masz klas, czy są zbalansowane?
- dlaczego przy KNN używasz 5 sąsiadów i metryki Minkowskiego? Gdzie analiza krzywej łokciowej?
- jaki cel ma realizować ten kod?
Równie dobrze, mógłbyś wziąć gotową bibliotekę, która ogarnie Ci wiele modeli klasyfikacji i wypluje ich porównanie. Będzie mniej kodu, np.
https://pypi.org/project/lazypredict/
https://pycaret.gitbook.io/docs#classification
- Rejestracja: dni
- Ostatnio: dni
- Postów: 195
Czy moglibyście udostępnić prywatne informacje kontaktowe? Przekazałbym Wam wtedy konkretną treść całego projektu.