python、機械学習初心者になります。
(画像認識を少々行った程度です)
現在、scikit-learnを使用して、ランダムな数字列(1~99)の入ったCSVを時系列に学習させて、
1.次に出る数字列を予測
2.指定した数字列の出る確率を出す
というものを作ってみようかと考えております。
(無意味な数字の羅列から、次に出る数字列を機械で予想できないことは承知しています)
ちなみに読み込むCSVは下記になります
学習させるCSV(study.csv)
csv
1data1,data2,data3,data4 222,62,73,97 322,61,66,99 426,58,76,78 57,35,43,60 630,35,75,86 735,61,87,89 848,50,62,74 986,87,94,98 1033,34,52,95 1132,35,58,61 1220,50,79,84 1382,15,92,96 1437,50,66,78 1562,74,87,89 1651,53,65,95 1774,75,80,86 1827,89,80,90 1962,78,57,89 2077,79,88,89 2137,54,88,92
テストで出現確率を取得したいCSV(test.csv)
csvv
1data1,data2,data3,data4 235,77,60,43 360,43,35,77 481,21,90,33
「1.次に出る数字列を予測」についてですが、FacebookのProphetを使用するのではなく、
LinearRegressionでの使用を考えています。
やってみようとしたやり方としては、
1~4行目の場合、5行目が出る
2~5行目の場合、6行目が出る
・
・
・
を続けていった時、study.csvの最後の4行
27,89,80,90
62,78,57,89
77,79,88,89
37,54,88,92
を学習した際に次に何が出るかを機械に出力させたいと思い
教師データを作成しようとしたのですが、
●説明変数
python
1trainX = 2[ 3[[22,62,73,110],[22,61,66,99],[26,58,76,78],[7,35,43,60]], 4[[22,61,66,99],[26,58,76,78],[7,35,43,60],[30,35,100,126]] 5]
●説明変数の結果?
python
1trainY = 2[ 3[30,35,100,126], 4[35,61,97,115] 5]
※イメージとしては、trainXの1行目の結果がtrainYの1行目…という感じです
【質問1】
ここで上記のtrainX、trainYで
python
1model = LinearRegression() 2model.fit(trainX, trainY)
を行うと、
「ValueError: Found array with dim 3. Estimator expected <= 2.」
が出てきてしまいます。
fitの引数のtrainXには2次元までのlistしか使用できないのでしょうか。
3次元を2次元に変換(reshape)する必要があるのでしょうか
【質問2】
質問1が解決できたとして、LinearRegressionで次の数字列を予測・取得することはできないのでしょうか。
python
1model.predict(testX)
を使用するとなると、testXという目的変数を使用しないと動作しないと思います。
(testXにstudy.csvの最後の4行を入れて、predictし、結果を取得するのが本来のやり方になるのでしょうか)
もしLinearRegressionを使用ない、次の予測したデータの取得方法があるのであれば方法などのヒントを教えていただけると助かります。
【質問3】
また、質問1が解決できたとして、
model.predict(testX)
の目的変数testXに
python
1testX = 2[ 3[1,1,1,1] 4[1,1,1,2] 5 ・ 6 ・ 7 ・ 8[99,99,99,98] 9[99,99,99,99] 10]
として、各要素の出現率を求めることは可能でしょうか。
(「テストで出現確率を取得したいCSV(test.csv)」を指定することで、出現する確率を取得したい)
【質問4】
このような予測は、正答率は問題外として「教師なし」の方法でも可能でしょうか
まだpython、機械学習自体が初心者で、質問自体が頓珍漢かもしれませんが、
ヒントだけでもいただけると学習の方向性がわかるかと思うのでアドバイスをよろしくお願いいたします。