質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

396閲覧

scikit-leanの行を跨ぐ学習はできるのか

supermaruetsu

総合スコア148

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/07/16 08:17

機械学習のプロジェクトに参加することになり質問です。

scikit-learnを使います。
アイリスの種類をrandomforestで判別する部分まで理解ができました。
このようなデータは分かりやすく、1行1行が独立しています。
iris.csv

iris.csv

1hanabira,kuki,shurui 25,5,A 36,5,B 47,3,B 54,4,A 63,3,? // ? => A

しかし行同士が関係している場合はどうアプローチしたらいいか分かりません。
2020年10月は3名の参加、2020年11月は2名の参加となってますが、scikit-learnは何名の参加者がいるか多分わからないでしょう。
そんな中2022年の結果が1位か2位かわからず3とか5とか作るんではないでしょうか。
この部分をどうしたらいいかコードを教えてもらえないでしょうか。

sugaku_orinpic.csv

1kaisai.month,rank,name 2202010,1,A 3202010,3,C 4202010,2,B 5202011,2,B 6202011,1,A 7202012,1,B 8202201,?,A // ? => 9202201,?,B // ? =>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2022/07/18 01:16

過去の実績から予測したら 1位:Cさん 2位:Bさん となるけど、「何らかの事情」でその時はCさんは参加できず、Bさんが繰り上がって1位になる 的なことを予測したい、ということでしょうか?
supermaruetsu

2022/07/20 04:42

年月の数=参加者の数なので、その中でのランクを予想したいというイメージです。 よろしくお願いします!!!
jbpb0

2022/07/29 01:10 編集

「sugaku_orinpic.csv」が数学の問題を解いた順位で、参加者がA, B, Cさん三名以外はいないなら、下記のようにするとか ・機械学習では、実際に参加するかどうかは無視して、A, B, Cさん三名の問題を解いた得点を予測する ・上記得点予測結果と、実際には誰が参加したかのデータを照合して、参加した人だけで1位から順番に順位を決める
jbpb0

2022/07/20 09:13

機械学習 順位 予測 でググったら、競馬の順位を機械学習で予測するのがたくさん見つかるので、そういうのを参考にしたらいいかも 直接順位を予測するのではなく、レースに参加する馬毎に「1位になりやすさ」みたいな数値を予測して、それの順番に並べるみたい たとえば、タイムを予測して、タイムが短い順に並べるとか
supermaruetsu

2022/07/20 09:20

参加する相手が分からないので順位を予想すること自体ができないと思いましたが機械学習ならできるのでしょうか?Aさんが出るとBさんは負けやすい、というのが集計されないとおもいましたが機械学習なら分かるんですか? 理解するのが難しいですね。コメントで色々と勉強になります。 ありがとうございます。
jbpb0

2022/07/20 12:37 編集

「sugaku_orinpic.csv」が数学の問題を解いた順位なら、順位を予測するのではなくて、問題を解いた得点を予測したらいいのではないですかね > Aさんが出るとBさんは負けやすい Bさんの予測得点よりもAさんの予測得点の方が高いなら、Aさんの方が上の順位になると予測できます
supermaruetsu

2022/07/23 00:30

ほお!確かに!です。考え方を工夫してうまくツールに合わせることが解決法だったのか。 大変勉強になります。
supermaruetsu

2022/07/23 00:32

ここで納得のいく方法たのですがBA差し上げたいです。どうしたらいいのだろう
jbpb0

2022/11/03 04:17

同内容を回答に書いてます
guest

回答2

0

ベストアンサー

「sugaku_orinpic.csv」が数学の問題を解いた順位なら、順位を予測するのではなくて、問題を解いた得点を予測したらいいのではないですかね

参加者がA, B, Cさん三名以外はいないなら、下記のようにするとか
・機械学習では、実際に参加するかどうかは無視して、A, B, Cさん三名の得点を予測する
・上記得点予測結果と、実際には誰が参加したかのデータを照合して、参加した人だけで1位から順番に順位を決める

投稿2022/07/29 01:07

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

要は他の説明変数からランクを予測したという質問で良いでしょうか?
あまり意味があるとは思えませんが、一応カテゴリ変数をOnehotベクターにして説明変数として予測するという
やり方もありますが、いい予測はできないように思えます

投稿2022/07/16 08:41

East_san

総合スコア407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

supermaruetsu

2022/07/16 09:01

回答ありがとうございます。 ランクを予想する場合はランダムフォレストではあまり良くないのでしょうか。 おすすめがあれば教えていただければ非常にうれしいです。
East_san

2022/07/16 09:33

ランダムフォレストが良いか悪いかはおいておいて。 機械学習をやる前にまずは記述統計(データ平均やどのカテゴリに属するものがどれくらいあるかなど基本的なデータ解析)やデータの分布を確認しデータの特性をある程度確認したほうが良いでしょう。 その上で、まずは線形回帰や決定木などの説明性の高いモデルを使い、そこから徐々に精度を上げていくためにブラックボックスモデルを使い精度を上げていくというのが一般的な流れではないでしょうか。 もしくは手頃に良い機械学習アルゴリズムを比較するのであれば、pycaretなどのAutoMLを使うとデータを投入するだけで各機械学習アルゴリズムのモデルの比較ができます。そこで一番良いモデルを選ぶと良いでしょう。 手頃に良い機械学習モデルを見つけるのが目的であればこちらがおすすめです。 https://pycaret.org/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問