2016-10-31 5 views
1

Azure MLのPythonでSGDを使用して単純なロジスティック回帰モデルを練習しようとしていますが、コードを実行するとエラーが発生します。もっと紛らわしいのは、エラーがエポック8だけに現れ、エポックのいずれにも現れないということです。私は誰にも感謝して、なぜこのようなエラーとそれを回避する方法があるのか​​を教えてもらえます。私は以下のコードとエラーを含んでいます。scikit-learn SGDClassifierオブジェクトに 'lenType'タイプがありませんlen()

from sklearn.linear_model import SGDClassifier 
    #Import data 
    cadd_dir = '.\\Script Bundle\\theano\\data\\' 
    ClinVar_ESP_dir = '.\\Script Bundle\\theano\\data\\' 
    #load data  
    X_tr = numpy.load(os.path.join(cadd_dir, 'training.X.npz')) 
    X_tr = scipy.sparse.csr_matrix((X_tr['data'], X_tr['indices'], X_tr['indptr']), shape=X_tr['shape']) 
    y_tr = numpy.load(os.path.join(cadd_dir, 'training.y.npy')) 
    #Train model 
    print('Train SGD Logistic Regression') 
    alpha = 1e-2 
    clf = SGDClassifier(loss="log", penalty='l2', alpha=alpha, random_state=None, shuffle=False, n_iter=10, verbose=1, n_jobs=1) 
    clf.fit(X_tr, y_tr) 




#Error 
"[Information]   -- Epoch 7 
[Information]   Norm: 0.40, NNZs: 641, Bias: 0.000623, T: 186214000, Avg. loss: 0.670200 
[Information]   Total training time: 43.97 seconds. 

[Information]   -- Epoch 8 
[Error]   Caught exception while executing function: Traceback (most recent call last): 
[Error]   File "C:\server\invokepy.py", line 211, in batch 
[Error]    xdrutils.XDRUtils.DataFrameToRFile(outlist[i], outfiles[i], True) 
[Error]   File "C:\server\XDRReader\xdrutils.py", line 51, in DataFrameToRFile 
[Error]    attributes = XDRBridge.DataFrameToRObject(dataframe) 
[Error]   File "C:\server\XDRReader\xdrbridge.py", line 40, in DataFrameToRObject 
[Error]    if (len(dataframe) == 1 and type(dataframe[0]) is pd.DataFrame): 
[Error]   TypeError: object of type 'NoneType' has no len() 
[Information]   Norm: 0.40, NNZs: 641, Bias: 0.000623, T: 212816000, Avg. loss: 0.669797 
[Information]   Total training time: 50.21 seconds. 

[Information]   -- Epoch 9 
[Information]   Norm: 0.40, NNZs: 641, Bias: 0.000622, T: 239418000, Avg. loss: 0.669482 
[Information]   Total training time: 56.46 seconds." 

答えて

0

あなたのプログラムは、通常の出力(「[情報]」)とエラーメッセージ(「[エラー]」)の両方を作成しているが、AzureのMLメーカーは唯一の出力ログを表示するために構築されているので、メッセージの両方のタイプ同じファイルに書き込まれています。混乱に加えて、各タイプのメッセージはログに書き込まれるときに異なる遅延を経験しました。これは、2つが無関係であっても、エラーメッセージがトレーニングのエポック8に関する情報メッセージで囲まれている理由を説明します。

エラーは、モジュールの実行が終了したときにPythonスクリプトの結果をエクスポートする関数によって投げられました。 Azure MLで正しく動作させるには、コードをazureml_main()という名前の関数にラップする必要があります(新しいExecute Python Scriptモジュールのテンプレートとして含まれています)。 azureml_main()pandasDataFrameを返す必要があります。あなたのコードがモデルに合っているだけなので、あなたが何を返そうとしているのか分かりませんが、次のようにすれば助かります:

from sklearn.linear_model import SGDClassifier 
import numpy 
import scipy 
import pandas as pd 

cadd_dir = '.\\Script Bundle\\theano\\data\\' 
ClinVar_ESP_dir = '.\\Script Bundle\\theano\\data\\' 

def azureml_main(input_df1 = None, input_df2 = None): 
    #load data  
    X_tr = numpy.load(os.path.join(cadd_dir, 'training.X.npz')) 
    X_tr = scipy.sparse.csr_matrix((X_tr['data'], X_tr['indices'], X_tr['indptr']), shape=X_tr['shape']) 
    y_tr = numpy.load(os.path.join(cadd_dir, 'training.y.npy')) 
    #Train model 
    print('Train SGD Logistic Regression') 
    alpha = 1e-2 
    clf = SGDClassifier(loss="log", penalty='l2', alpha=alpha, random_state=None, shuffle=False, n_iter=10, verbose=1, n_jobs=1) 
    clf.fit(X_tr, y_tr) 
    return(pd.DataFrame([])) 

P.S.あなたは変異効果予測に関するMSRのJenn/Nicoloと協力していますか?あなたがそれらにpingする必要がない場合

関連する問題