RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Meisyo データサイエンス SQL

[Meisyo]練習難易度の不均衡是正への分析的アプローチ2

投稿日:

[Meisyo]練習難易度の不均衡是正への分析的アプローチから早3か月。

「練習ごとに難易度が違いすぎるんですけど!!」という不満は少しは解消されたかなー・・・

効果測定してないのにわかるの?エスパーなの?
というわけで・・・

管理画面に入れちゃいました!
これでいつでも見れるよ!

結果発表。
ポイントの分布が大きければ大きいほど、カラーバーが太くなります。

今後はこれを見て調整します。

game11がやばい。(語彙力)

game4もちょっと少ないかな?

・・・って前問題になってた練習だよねコレ・・・
回数も少ないし・・・避けないでドウゾ

というわけで、
game11はPointを2倍に、
game4は全体的にポイントを緩和ビンゴのカウント方式を変更(簡素化)しました。

カウント方式の変更内容
以前は、
スロットで出た5つの数字をすべて比較する方式でした。

今回は、
スロットで出た5つの数字の種類を数える方式にしました。

この変更によって、以前は下記のような当たってるだろっていうのもなくなります。

例1:
11,11,12,12,13
前→1ビンゴ
今→2ビンゴ

例2:
9,9,11,11,11
前→1ビンゴ
今→3ビンゴ

詳しい計算は以下の通り。
例1:
11,11,12,12,13

種類ごとに数字をまとめる(一意化)
→11,12,13

[11,12,13]の配列の個数を計算
→3

5-配列の個数(3)
2ビンゴ!

例2:
9,9,9,11,11

種類ごとに数字をまとめる(一意化)
→9,11

[9,11]の配列の個数を計算
→2

5-配列の個数(2)
3ビンゴ!

例:完全ビンゴ
1,1,1,1,1

種類ごとに数字をまとめる(一意化)
→1

[1]の配列の個数を計算
→1

5-配列の個数(1)
4ビンゴ!(=完全ビンゴ)

すみません。
思いつかなくてどうにかできる方法で実装していました。(でもどうにか、、なっていない)

改善していきます。orz

後、思ったのですが・・・
SQLでだいたいのことができるので、Python要らなくね?って思ったり。

というわけで、SQLを置いていきます。何かの参考に!

SELECT
  s.action_no
  ,SUM(s.count_uu) AS total_uu
  ,CEIL(SUM(s.point * count_uu) / SUM(s.count_uu)) AS ave_point
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 0 THEN count_uu ELSE 0 END) AS point_00
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 1 THEN count_uu ELSE 0 END) AS point_01
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 2 THEN count_uu ELSE 0 END) AS point_02
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 3 THEN count_uu ELSE 0 END) AS point_03
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 4 THEN count_uu ELSE 0 END) AS point_04
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 5 THEN count_uu ELSE 0 END) AS point_05
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 6 THEN count_uu ELSE 0 END) AS point_06
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 7 THEN count_uu ELSE 0 END) AS point_07
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 8 THEN count_uu ELSE 0 END) AS point_08
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 9 THEN count_uu ELSE 0 END) AS point_09
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 10 THEN count_uu ELSE 0 END) AS point_10
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 11 THEN count_uu ELSE 0 END) AS point_11
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 12 THEN count_uu ELSE 0 END) AS point_12
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 13 THEN count_uu ELSE 0 END) AS point_13
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 14 THEN count_uu ELSE 0 END) AS point_14
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 15 THEN count_uu ELSE 0 END) AS point_15
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 16 THEN count_uu ELSE 0 END) AS point_16
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 17 THEN count_uu ELSE 0 END) AS point_17
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 18 THEN count_uu ELSE 0 END) AS point_18
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 19 THEN count_uu ELSE 0 END) AS point_19
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 20 THEN count_uu ELSE 0 END) AS point_20

# 全体集計
FROM
  (
    SELECT
      SUBSTRING_INDEX(action, ',', 1) AS action_no
      ,CEIL(SUBSTRING_INDEX(action, ',', -1)) AS point
      ,COUNT(action) AS count_uu
    FROM
      acts
    WHERE
      sub = 'practice'
    AND
      time >= '$date 00:00:00'
    AND
      LENGTH(SUBSTRING_INDEX(action, ',', 1)) > 0
    AND
      CEIL(SUBSTRING_INDEX(action, ',', -1)) BETWEEN 0 AND 200
    GROUP BY
      action_no
      ,point DIV 10
    ORDER BY
      action_no
  ) AS s
GROUP BY
  s.action_no;

DIV要らない気もするけど気にしてはいけない(戒め)

-Web制作, Meisyo, データサイエンス, SQL

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[Meisyo]育成情報

これは何? 名将と呼ばれた者達(略:Meisyo)の説明書です。 まず何をやればいいの?というところから、 どうすれば上手くいくの?という疑問にお答えします。 質問や気になるところがあれば、れいまでご …

no image

PHPのコーディング規則、PSRを学ぶ(1)

PHPはかなり自由に書けることが魅力なのですが「自由に書ける」=「独自化する」=「その人以外わからない」等式が成り立ってしまいます。 これは困った。 つまり、コーディング(コードの書き方)の一般的な規 …

[社内コンペ] 細胞画像認識

これは何? 某社で行われている社内コンペのメモです。私の備忘録でもあります。 結果:2位 精度:68.3% 120枚をクラス1~3で各40枚としていました。 ただし、その数値に合わせに行こうとすること …

no image

[PHP]まとめ読みをPSRで改良する(3)

(2)の記事から「PDO」を使い、データの通信をオブジェクト化しました。 password_hashを使い、パスワード処理の暗号化も行いました。 PDOを導入する一番の理由は「mysql_query」 …

[python]MNISTの学習モデルを保存し、テストする

機械学習のHello World的なMNISTにて、学習モデルを保存し、実行する際のメモ。 用意するもの PC コマンドプロンプト インストール(python、sklearn、numpy) 学習時のコ …