Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage automatique Discussion :

regression knn avec scikit learn


Sujet :

Bibliothèques d'apprentissage automatique

  1. #1
    Membre du Club
    regression knn avec scikit learn
    bonjour

    je veux faire une régression du plus proche voisin pour une base de donnée contenant 4 colonnes 2 variables significatives(v2 et v3) et une variable cible(v1) en groupant par la variable 4, je réussis à faire la régression et aussi un plot qui me dessine mes valeurs et les valeurs prédites , je veux savoir si il y a une autre manière de visualiser les résultats et si il y a une méthode qui me permet de choisir le k optimal à utiliser

    voici un échantillon de la base de donnée que j'utilise,

    ci-joint le code que j'ai effectué jusqu'à maintenant merci pour votre aide

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    mesures_names=['v2','v3'] 
    df1=df[['v2','v3']]
    df1=(df1-np.mean(df1))/np.std(df1)
     
    angle=np.unique(df['v4'])
    longueur_tableau=len(angle)
    df[['v1']]=(df[['v1']]-np.mean(df[['v1']]))/np.std(df[['v1']])
    Mesure_train,Mesure_test,y_train,y_test=train_test_split(df1,df[['v1']],test_size=0.2,random_state=42)
    y=[]
    z=[]
    for i in range(len(angle)):
            k=[]
            y_pred_train=[]
            i_angle=  df['v4'] == angle[i]
            x=Mesure_train[i_angle].as_matrix().astype(np.float)     
            k=y_train[['v1']][i_angle].as_matrix().astype(np.float)
            y.append(k)
            Kneighbor_regression=KNeighborsRegressor(n_neighbors=10,weights='distance')
            Kneighbor_regression.fit(x,k)       
            y_pred_train=Kneighbor_regression.predict(x)
            z.append(y_pred_train)
            score_train=np.round(r2_score(k,y_pred_train),4)*100
            print "pour l'angle %s nous avons un pouvoir predictif de %s"%(angle[i],score_train)
            y_pred_test=Kneighbor_regression.predict(Mesure_test[i_angle])
            score_test=np.round(r2_score(Mesure_test[i_angle],y_pred_test),4)*100
            print "pour l'angle %s nous avons un pouvoir predictif de %s"%(angle[i],score_train)
            print "pour l'angle %s nous avons un pouvoir predictif de %s"%(angle[i],score_test)
     
    for xe, ye,ze in zip(angle,y,z):
                plt.xticks(angle,rotation=45)
                plt.scatter([xe]*len(ye),ye,c='b', label='data')
     
                plt.scatter([xe]*len(ze),ze,c='r',label="prediction")

  2. #2
    Membre du Club
    Bonjour

    le deuxième problème c'est que quand je vois le r2 de l échantillon d’apprentissage et celui test y a une grande différence entre les deux je sais pas si j'ai fais une faute dans mon code sans faire attention

###raw>template_hook.ano_emploi###