タグ付けされた質問 「scikit-learn」

Python用の機械学習ライブラリ。このタグは、(a)scikit-learnが質問の重要な部分または予想される回答として含まれているトピックトピックの質問に使用し、&(b)はscikit-learnの使い方だけではありません。

1
相互検証、学習曲線、最終評価のためにデータセットを分割する方法は?
データセットを分割するための適切な戦略は何ですか? 私は、次のアプローチにフィードバックを求める(ないような個々のパラメータのtest_sizeかn_iter、私が使用している場合X、y、X_train、y_train、X_test、およびy_test適切かつシーケンスは理にかなっている場合): (scikit-learnドキュメントからこの例を拡張) 1.データセットをロードする from sklearn.datasets import load_digits digits = load_digits() X, y = digits.data, digits.target 2.トレーニングとテストセットに分割(例:80/20) from sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) 3.推定量を選択 from sklearn.svm import SVC estimator = SVC(kernel='linear') 4.相互検証イテレーターを選択します from sklearn.cross_validation import ShuffleSplit cv = ShuffleSplit(X_train.shape[0], n_iter=10, test_size=0.2, random_state=0) 5.ハイパーパラメーターの調整 …

1
Scikit-learnでのワンホットエンコーディングとダミーエンコーディング
カテゴリー変数をエンコードするには、2つの異なる方法があります。たとえば、1つのカテゴリ変数にn個の値があります。ワンホットエンコーディングに変換してN個の変数ながらダミーコードへと変換し、N-1の変数。カテゴリ変数がk個あり、それぞれにn個の値がある場合。1つのホットエンコーディングはkn変数で終わり、ダミーエンコーディングはkn-k変数で終わります。 ワンホットエンコーディングの場合、インターセプトにより共線性の問題が発生し、モデルが正常に機能しないことがあります。誰かがそれを「ダミー変数トラップ」と呼びます。 私の質問: Scikit-learnの線形回帰モデルにより、ユーザーはインターセプトを無効にできます。ワンホットエンコーディングの場合、常にfit_intercept = Falseを設定する必要がありますか?ダミーエンコーディングの場合、fit_interceptは常にTrueに設定する必要がありますか?ウェブサイトに「警告」は表示されません。 ワンホットエンコーディングではより多くの変数が生成されるため、ダミーエンコーディングよりも自由度が高くなりますか?

5
SVM機能の重みをどのように解釈しますか?
線形SVMを近似することで与えられる可変の重みを解釈しようとしています。 (私はscikit-learnを使用しています): from sklearn import svm svm = svm.SVC(kernel='linear') svm.fit(features, labels) svm.coef_ これらの重みがどのように計算または解釈されるかを具体的に説明するドキュメントには何も見つかりません。 体重のサインはクラスと関係がありますか?

2
パンダ/ Statsmodel / Scikit-learn
パンダ、Statsmodels、およびScikitは、機械学習/統計操作の異なる実装を学習していますか、またはこれらは相互に補完的ですか? どれが最も包括的な機能を備えていますか? 積極的に開発および/またはサポートされているのはどれですか? ロジスティック回帰を実装する必要があります。これらのどれを使用すべきかについての提案はありますか?

2
ロジスティック回帰:Scikit Learn vs Statsmodels
これら2つのライブラリのロジスティック回帰からの出力が異なる結果を与える理由を理解しようとしています。 私は、UCLAのidreのからのデータセットを使用していますチュートリアル予測、admitに基づいてgre、gpaとrank。rankはカテゴリ変数として扱われるため、最初にrank_1ドロップされてダミー変数に変換されます。インターセプト列も追加されます。 df = pd.read_csv("https://stats.idre.ucla.edu/stat/data/binary.csv") y, X = dmatrices('admit ~ gre + gpa + C(rank)', df, return_type = 'dataframe') X.head() > Intercept C(rank)[T.2] C(rank)[T.3] C(rank)[T.4] gre gpa 0 1 0 1 0 380 3.61 1 1 0 1 0 660 3.67 2 1 0 0 0 800 4.00 3 1 …

3
scikit-learnを使用した多項式回帰
多項式回帰にscikit-learnを使用しようとしています。私が読んだ多項式回帰は、線形回帰の特殊なケースです。scikitの一般化された線形モデルのいずれかが、高次の多項式に適合するようにパラメーター化できるかもしれないと思っていましたが、それを行うオプションはありません。 私はポリカーネルでサポートベクターリグレッサーを使用することに成功しました。これは私のデータのサブセットでうまく機能しましたが、大きなデータセットに適合するにはかなり時間がかかりますので、(ある程度の精度を交換しても)さらに高速なものを見つける必要があります。 ここで明らかな何かを見逃していますか?

1
sklearnの分類レポートの数字はどういう意味ですか?
以下に、sklearnのsklearn.metrics.classification_reportドキュメントから抜粋した例を示します。 私が理解していないのは、クラスが予測ラベルであると信じる各クラスにf1スコア、精度、リコール値がある理由です。f1スコアはモデルの全体的な精度を示していると思います。また、サポート列は何を教えてくれますか?私はそれに関する情報を見つけることができませんでした。 print(classification_report(y_true, y_pred, target_names=target_names)) precision recall f1-score support class 0 0.50 1.00 0.67 1 class 1 0.00 0.00 0.00 1 class 2 1.00 0.67 0.80 3 avg / total 0.70 0.60 0.61 5

1
自由度は非整数の数値にできますか?
GAMを使用すると、残留DFは(コードの最終行)になります。どういう意味ですか?GAMの例を超えて、一般に、自由度の数を整数以外の数にすることはできますか?26.626.626.6 > library(gam) > summary(gam(mpg~lo(wt),data=mtcars)) Call: gam(formula = mpg ~ lo(wt), data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -4.1470 -1.6217 -0.8971 1.2445 6.0516 (Dispersion Parameter for gaussian family taken to be 6.6717) Null Deviance: 1126.047 on 31 degrees of freedom Residual Deviance: 177.4662 on 26.6 degrees of …
27 r  degrees-of-freedom  gam  machine-learning  pca  lasso  probability  self-study  bootstrap  expected-value  regression  machine-learning  linear-model  probability  simulation  random-generation  machine-learning  distributions  svm  libsvm  classification  pca  multivariate-analysis  feature-selection  archaeology  r  regression  dataset  simulation  r  regression  time-series  forecasting  predictive-models  r  mean  sem  lavaan  machine-learning  regularization  regression  conv-neural-network  convolution  classification  deep-learning  conv-neural-network  regression  categorical-data  econometrics  r  confirmatory-factor  scale-invariance  self-study  unbiased-estimator  mse  regression  residuals  sampling  random-variable  sample  probability  random-variable  convergence  r  survival  weibull  references  autocorrelation  hypothesis-testing  distributions  correlation  regression  statistical-significance  regression-coefficients  univariate  categorical-data  chi-squared  regression  machine-learning  multiple-regression  categorical-data  linear-model  pca  factor-analysis  factor-rotation  classification  scikit-learn  logistic  p-value  regression  panel-data  multilevel-analysis  variance  bootstrap  bias  probability  r  distributions  interquartile  time-series  hypothesis-testing  normal-distribution  normality-assumption  kurtosis  arima  panel-data  stata  clustered-standard-errors  machine-learning  optimization  lasso  multivariate-analysis  ancova  machine-learning  cross-validation 

2
精度-リコール曲線下面積(PR曲線のAUC)および平均精度(AP)
平均精度(AP)は、精度-リコール曲線(PR曲線のAUC)の下の面積ですか? 編集: PR AUCとAPの違いに関するコメントを次に示します。 AUCは、精度の台形補間によって取得されます。代替の通常ほぼ同等のメトリックは、info.apとして返されるAverage Precision(AP)です。これは、新しい陽性サンプルが呼び出されるたびに取得される精度の平均です。精度が定数セグメントによって補間される場合、AUCと同じであり、TRECが最も頻繁に使用する定義です。 http://www.vlfeat.org/overview/plots-rank.html また、AUC及びaverage_precision_score結果は、学習scikitに同じではありません。これは奇妙なことです。なぜなら、ドキュメントには次のようなものがあるからです。 予測スコアから平均精度(AP)を計算するこのスコアは、精度-想起曲線の下の領域に対応します。 コードは次のとおりです。 # Compute Precision-Recall and plot curve precision, recall, thresholds = precision_recall_curve(y_test, clf.predict_proba(X_test)[:,1]) area = auc(recall, precision) print "Area Under PR Curve(AP): %0.2f" % area #should be same as AP? print 'AP', average_precision_score(y_test, y_pred, average='weighted') print 'AP', average_precision_score(y_test, y_pred, average='macro') print …

4
scikit-learn(またはその他のPythonフレームワーク)を使用したさまざまな種類のリグレッサのアンサンブル
回帰タスクを解決しようとしています。LassoLARS、SVR、およびGradient Tree Boostingの3つのモデルがデータのさまざまなサブセットに対してうまく機能していることがわかりました。これら3つのモデルすべてを使用して予測を行い、次に「真の出力」と3つのモデルの出力のテーブルを作成すると、少なくとも1つのモデルが真の出力に実際に近いことがわかります。比較的遠く離れている可能性があります。 最小限のエラーを計算すると(各テスト例の「最良の」予測子から予測を取得した場合)、モデルのみのエラーよりもはるかに小さいエラーが発生します。そこで、これら3つの異なるモデルの予測を何らかのアンサンブルに結合しようと考えました。質問は、これを適切に行う方法ですか?3つのモデルはすべてscikit-learnを使用して構築および調整されていますが、アンサンブルにモデルをパックするために使用できる何らかの方法を提供していますか?ここでの問題は、3つのモデルすべてからの予測を単に平均化するのではなく、特定の例のプロパティに基づいて重み付けを決定する必要がある重み付けでこれを実行することです。 scikit-learnがそのような機能を提供しない場合でも、誰かがこのタスクに対処する方法を知っていれば、データ内の各例の各モデルの重みを把握するのがいいでしょう。これらの3つのモデルすべての上に構築された個別のリグレッサーによって実行される可能性があると思いますが、3つのモデルのそれぞれに最適な重みを出力しようとしますが、これがこれを行う最善の方法であるかどうかはわかりません。

2
Pythonのscikit-learn LDAが正しく機能しないのはなぜですか?また、SVDを介してLDAを計算する方法
私はscikit-learn次元削減のために機械学習ライブラリ(Python)の線形判別分析(LDA)を使用していましたが、結果に少し興味がありました。私は今、LDAが何をしているのか疑問に思っていscikit-learnます。その結果、例えば、手動でのアプローチやRで行われたLDAとは異なった結果になります。 基本的に最も懸念さscikit-plotれるのは、相関0があるはずの2つの変数間の相関を示すことです。 テストでは、Irisデータセットを使用し、最初の2つの線形判別式は次のようになりました。 IMG-1 scikit-learn経由のLDA これは、私がscikit-learn ドキュメントで見つけた結果と基本的に一致しています。 今、私はLDAを段階的に通り抜けて、異なる予測を得ました。何が起こっているのかを知るために、さまざまなアプローチを試しました。 IMG-2。生データのLDA(センタリングなし、標準化なし) そして、最初にデータを標準化(zスコア正規化;単位分散)した場合のステップバイステップのアプローチになります。同じことを平均中心化のみで行いました。これにより、同じ相対投影画像が得られるはずです(実際にそうなりました)。 IMG-3。平均中心化または標準化後の段階的なLDA IMG-4。RのLDA(デフォルト設定) IMG-3のLDAは、データを中央に配置したため(推奨されるアプローチ)、RでLDAを実行した誰かが投稿で見つけたものとまったく同じに見えます。 参照用コード すべてのコードをここに貼り付けたくはありませんでしたが、LDAプロジェクションで使用したいくつかのステップ(以下を参照)に分けてIPythonノートブックとしてアップロードしました。 ステップ1:d次元平均ベクトルの計算m私= 1n私∑X ∈ D私nバツkm私=1n私∑バツ∈D私nバツk\mathbf m_i = \frac{1}{n_i} \sum\limits_{\mathbf x \in D_i}^n \; \mathbf x_k ステップ2:散布図の計算 2.1クラス内散布行列は、次の方程式によって計算されますS W = C Σ I = 1、S I = C Σ I = 1 N Σのx ∈ D I(X …

2
Scikit-learnの平均絶対パーセントエラー(MAPE)[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、相互検証のトピックになるようにします。 2年前に閉店。 Pythonとscikit-learnを使用して予測の平均絶対パーセント誤差(MAPE)を計算するにはどうすればよいですか? docsから、回帰のこれらの4つのメトリック関数のみがあります。 metrics.explained_variance_score(y_true、y_pred) metrics.mean_absolute_error(y_true、y_pred) metrics.mean_squared_error(y_true、y_pred) metrics.r2_score(y_true、y_pred)

5
オーバーフィッティング:特効薬はありませんか?
私の理解では、適切な相互検証とモデル選択手順を踏んだとしても、モデルの複雑さ、期間に制限を課さない限り、モデルを十分に検索すると過適合が発生します。さらに、多くの場合、人々は、提供できる保護を損なうデータからモデルの複雑さに対する罰則を学ぼうとします。 私の質問は次のとおりです。上記の声明にはどれほど真実がありますか? MLの専門家は、「私の会社/研究室では、利用可能なすべてのモデル(キャレットやscikit-learnなどのライブラリから)を常に試して、どれが最適かを確認します」とよく耳にします。私はしばしば、このアプローチは交差検証に真剣であり、任意の方法でホールドアウトセットを保持している場合でも簡単にオーバーフィットできると主張します。さらに、検索が難しくなればなるほど、オーバーフィットする可能性が高くなります。言い換えれば、過剰な最適化は本当の問題であり、体系的にそれと戦うのに役立つ経験則はありません。このように考えるのは間違っていますか?

2
マルチラベル分類器でscikit-learnの相互検証関数を使用する方法
5つのクラスがあり、各インスタンスがこれらのクラスの1つ以上に属することができるデータセットでさまざまな分類子をテストしているので、特にscikit-learnのマルチラベル分類子を使用していますsklearn.multiclass.OneVsRestClassifier。次に、を使用して相互検証を実行しsklearn.cross_validation.StratifiedKFoldます。これにより、次のエラーが生成されます。 Traceback (most recent call last): File "mlfromcsv.py", line 93, in <module> main() File "mlfromcsv.py", line 77, in main test_classifier_multilabel(svm.LinearSVC(), X, Y, 'Linear Support Vector Machine') File "mlfromcsv.py", line 44, in test_classifier_multilabel scores = cross_validation.cross_val_score(clf_ml, X, Y_list, cv=cv, score_func=metrics.precision_recall_fscore_support, n_jobs=jobs) File "/usr/lib/pymodules/python2.7/sklearn/cross_validation.py", line 1046, in cross_val_score X, y = check_arrays(X, …

2
numpyとsklearnのPCAは異なる結果を生成します
私は何かを誤解していますか。これは私のコードです sklearnを使用する import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn import decomposition from sklearn import datasets from sklearn.preprocessing import StandardScaler pca = decomposition.PCA(n_components=3) x = np.array([ [0.387,4878, 5.42], [0.723,12104,5.25], [1,12756,5.52], [1.524,6787,3.94], ]) pca.fit_transform(x) 出力: array([[ -4.25324997e+03, -8.41288672e-01, -8.37858943e-03], [ 2.97275001e+03, -1.25977271e-01, 1.82476780e-01], [ 3.62475003e+03, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.