Python Modeli bileşeni oluşturma

Bu makalede Azure Machine Learning tasarımcısındaki bir bileşen açıklanmaktadır.

Python betiğinden eğitilmemiş bir model oluşturmak için Python Modeli Oluştur bileşenini kullanmayı öğrenin. Modeli, Azure Machine Learning tasarımcı ortamındaki bir Python paketine dahil olan herhangi bir öğrenciye dayandırabilirsiniz.

Modeli oluşturduktan sonra Modeli Eğit'i kullanarak modeli Azure Machine Learning'deki diğer öğrenciler gibi bir veri kümesinde eğitebilirsiniz. Eğitilen model, tahminlerde bulunmak için Modeli Puanla'ya geçirilebilir. Daha sonra eğitilen modeli kaydedebilir ve puanlama iş akışını web hizmeti olarak yayımlayabilirsiniz.

Uyarı

Şu anda bu bileşeni Model Hiper Parametrelerini Ayarlama bileşenine bağlamak veya Bir Python modelinin puanlanmış sonuçlarını Modeli Değerlendirmek için geçirmek mümkün değildir. Hiper parametreleri ayarlamanız veya bir modeli değerlendirmeniz gerekiyorsa Python Betiği Yürüt bileşenini kullanarak özel bir Python betiği yazabilirsiniz.

Bileşeni yapılandırma

Bu bileşenin kullanımı Python hakkında ara veya uzman bilgisi gerektirir. Bileşen, Azure Machine Learning'de zaten yüklü olan Python paketlerine dahil olan tüm öğrencilerin kullanımını destekler. Python Betiğini Yürütme bölümünde önceden yüklenmiş Python paketi listesine bakın.

Not

Lütfen betiğinizi yazarken çok dikkatli olun ve bildirilmemiş nesne veya içeri aktarılmamış bileşen kullanma gibi söz dizimi hatası olmadığından emin olun.

Not

Ayrıca Python Betiği Yürütme bölümünde önceden yüklenmiş bileşenler listesine de ek dikkat edin. Yalnızca önceden yüklenmiş bileşenleri içeri aktar. Lütfen bu betikte "pip install xgboost" gibi ek paketler yüklemeyin, aksi takdirde aşağı akış bileşenlerindeki modeller okunurken hatalar oluşur.

Bu makalede Python Modeli Oluşturma'nın basit bir işlem hattıyla nasıl kullanılacağı gösterilmektedir. İşlem hattının diyagramı aşağıdadır:

Python Modeli Oluşturma Diyagramı

  1. Python Modeli Oluştur'u seçin ve betiği düzenleyerek modelleme veya veri yönetimi işleminizi uygulayın. Modeli, Azure Machine Learning ortamındaki bir Python paketine dahil olan herhangi bir öğrenciye dayandırabilirsiniz.

Not

Lütfen betiğin örnek kodundaki açıklamalara daha fazla dikkat edin ve betiğinizin sınıf adı, yöntemler ve yöntem imzası gibi gereksinimleri kesinlikle izlediğinden emin olun. İhlal özel durumlara yol açar. Python Modeli Oluşturma yalnızca Modeli Eğiterek eğitilecek sklearn tabanlı model oluşturmayı destekler.

İki sınıflı Naive Bayes sınıflandırıcısının aşağıdaki örnek kodu popüler sklearn paketini kullanır:


# The script MUST define a class named Azure Machine LearningModel.
# This class MUST at least define the following three methods:
    # __init__: in which self.model must be assigned,
    # train: which trains self.model, the two input arguments must be pandas DataFrame,
    # predict: which generates prediction result, the input argument and the prediction result MUST be pandas DataFrame.
# The signatures (method names and argument names) of all these methods MUST be exactly the same as the following example.

# Please do not install extra packages such as "pip install xgboost" in this script,
# otherwise errors will be raised when reading models in down-stream components.

import pandas as pd
from sklearn.naive_bayes import GaussianNB


class AzureMLModel:
    def __init__(self):
        self.model = GaussianNB()
        self.feature_column_names = list()

    def train(self, df_train, df_label):
        # self.feature_column_names records the column names used for training.
        # It is recommended to set this attribute before training so that the
        # feature columns used in predict and train methods have the same names.
        self.feature_column_names = df_train.columns.tolist()
        self.model.fit(df_train, df_label)

    def predict(self, df):
        # The feature columns used for prediction MUST have the same names as the ones for training.
        # The name of score column ("Scored Labels" in this case) MUST be different from any other columns in input data.
        return pd.DataFrame(
            {'Scored Labels': self.model.predict(df[self.feature_column_names]), 
             'probabilities': self.model.predict_proba(df[self.feature_column_names])[:, 1]}
        )


  1. Modeli Eğitmek ve Modeli Puanla seçeneğine yeni oluşturduğunuz Python Modeli Oluştur bileşenini bağlayın.

  2. Modeli değerlendirmeniz gerekiyorsa bir Python Betiği Yürüt bileşeni ekleyin ve Python betiğini düzenleyin.

    Aşağıdaki betik örnek değerlendirme kodudur:

    
    
    # The script MUST contain a function named azureml_main
    # which is the entry point for this component.
    
    # imports up here can be used to 
    import pandas as pd
    
    # The entry point function MUST have two input arguments:
    #   Param<dataframe1>: a pandas.DataFrame
    #   Param<dataframe2>: a pandas.DataFrame
    def azureml_main(dataframe1 = None, dataframe2 = None):
    
        from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
        import pandas as pd
        import numpy as np
    
        scores = dataframe1.ix[:, ("income", "Scored Labels", "probabilities")]
        ytrue = np.array([0 if val == '<=50K' else 1 for val in scores["income"]])
        ypred = np.array([0 if val == '<=50K' else 1 for val in scores["Scored Labels"]])    
        probabilities = scores["probabilities"]
    
        accuracy, precision, recall, auc = \
        accuracy_score(ytrue, ypred),\
        precision_score(ytrue, ypred),\
        recall_score(ytrue, ypred),\
        roc_auc_score(ytrue, probabilities)
    
        metrics = pd.DataFrame();
        metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
        metrics["Value"] = [accuracy, precision, recall, auc]
    
        return metrics,
    
    

Sonraki adımlar

Bkz. Azure Machine Learning için kullanılabilen bileşenler kümesi.