[0306]_AIvision正規化表示★

苦労しました!
以下の表示をするために、整形しました。。。。
もっと上手な方法あるだろに。。。

ーーーーーーーーーーーーーーーーー
表示例
ーーーーーーーーーーーーーーーーー

———————————-
{ “responses”: [ { “labelAnnotations”: [ { “mid”: “/m/01bqvp”, “description”: “sky”, “score”: 0.839981 }, { “mid”: “/m/05s2s”, “description”: “plant”, “score”: 0.81922907 }, { “mid”: “/m/07j7r”, “description”: “tree”, “score”: 0.7888217 }, { “mid”: “/m/07bxq”, “description”: “tourism”, “score”: 0.68298364 }, { “mid”: “/m/0lhr”, “description”: “arecales”, “score”: 0.6642025 } ] } ] }
———————————-

——-Start——
A— “description”: “sky”, “score”: 0.839981
B— “description”: “plant”, “score”: 0.81922907
C— “description”: “tree”, “score”: 0.7888217
D— “description”: “tourism”, “score”: 0.68298364
E— “description”: “arecales”, “score”: 0.6642025
——–End——-

ーーーーーーーーーーーーーーーーー
コードは、以下
ーーーーーーーーーーーーーーーーー
echo “
“;
echo “——-Start——“.”
“;

//$a = strstr($response,’,’,true);
$a = strstr($response,’,’);
$a1 = substr($a, 1);
$a1z = strstr($a1,’}’,true);
echo “A—“.$a1z.”
“;

$b = strstr($a1,'{‘);
$b1 = substr($b, 1);
$b1z = strstr($b1,’}’,true);
$b1zz = strstr($b1z,’,’);
$b1zzz = substr($b1zz, 1);
echo “B—“.$b1zzz.”
“;

$c = strstr($b1,'{‘);
$c1 = substr($c, 1);
$c1z = strstr($c1,’}’,true);
$c1zz = strstr($c1z,’,’);
$c1zzz = substr($c1zz, 1);
echo “C—“.$c1zzz.”
“;

$d = strstr($c1,'{‘);
$d1 = substr($d, 1);
$d1z = strstr($d1,’}’,true);
$d1zz = strstr($d1z,’,’);
$d1zzz = substr($d1zz, 1);
echo “D—“.$d1zzz.”
“;

$e = strstr($d1,'{‘);
$e1 = substr($e, 1);
$e1z = strstr($e1,’}’,true);
$e1zz = strstr($e1z,’,’);
$e1zzz = substr($e1zz, 1);
echo “E—“.$e1zzz.”
“;

echo “——–End——-“.”
“;

以上

[0305]_AzureMIを使ってSO件数を予測する★

AzureMIを使ってSO件数を予測する・・をやってみる
https://www.cresco.co.jp/blog/entry/795/
Azure Machine Learningでナンバーズ予測(後編)
を参考に。

まず、
https://studio.azureml.net
に入る。Sgin in here

■データのアップロード
差分方式でのデータを準備したので、それを使う。
「Dataset」「from local file」へ。
(図1)
(図2)
(図3)complete
(図4)入りました!

■モデル作成、評価
Experimentsを追加する、左下「+NEW」を押下。
タイトル編集「SO_件数予測_20170816」へ。

■学習データの配置
ドラッグ&ドロップで。
(図5)
(図6)

■各モジュール配置
・アルゴリズム
今回は線形回帰を指定。他のアルゴリズムや自信で開発したものなどを指定できます。
“Machine Learning > Initialize Model > Regression > Liner Regression”

・モデル
アルゴリズムと学習データによって作られる予測モデルとなります。
“Machine Learning > Train > Train Model”

・データ選択モジュール
登録したデータから予測に使用するカラムを指定します。
“Data Trasformation > Manipulation > Select Columns in Dataset”

・データ分割モジュール
登録したデータを学習用、評価用に分割します。
“Data Trasformation > Sample and split > Split Data”

・スコアモジュール
予測した値の確認、評価を行います。
“Machine Learning > Score > Score Model”

習って配置・・・・
(図7)

■結線とカラム選定
まず、IPVoice_new、collabo_new、IPVoice_new_d、collabo_new_Dを選択し予測をしてみる

Splitの設定、80%を学習データとする

Train Modelでは、IPVoice_new_dの差分を予測する。
選定は1項目しかできない。

■モデル実行
Runで実行。緑のチェックが付く。

「Score Model」でVisualizationを見る。
まあまあかな。。。
(図8)

■Webサービスとして準備
「input」「output」をドラッグ&ドロップ。
(図9)

「Score Model」 に配置、結線。
(図10)

「Run」実行。
次に更に
”Train Model”を選択してから”Predictive Web Service[Recommended]”を実行。
(勝手に動く、結線も動く)

ので、再度、結線しなおし。
(図11)

Select Columnsから、「IPVoice_new_d」は削除(用済み。。て事??)

■Webサービスの公開
「Run」実行後、「Deploy Web Service」
更にボタンを押す
(図12)

https://services.azureml.net/subscriptions/9a54705d-f1b3-482b-aea5-b2e4d065a9c8/resourceGroups/20170815_rsgroup_1/providers/Microsoft.MachineLearning/webServices/SO20170816Predic.2017.8.16.SO_prospect1/

「test」をクリック
(図13)

「1000」を入力してみる。
結果は・・・・
「438.483874360301」・・・と。
つまり438件多い・・・?

「500」を入力してみる。
結果は・・・・
「-106.291624502971」・・・と。
つまり106件足らず・・・?

IPVoice_new
「598」で
Scored Labels
「0.484373274230393」
だいたいこの数字なのか????

https://services.azureml.net/subscriptions/9a54705d-f1b3-482b-aea5-b2e4d065a9c8/resourceGroups/20170815_rsgroup_1/providers/Microsoft.MachineLearning/webServices/SO20170816Predic.2017.8.16.SO_prospect1/test

以上

<以下、画像・・・>

[0304]_Azure Machine Learningチュートリアル_car_price★

Machine Learning のチュートリアル:
Azure Machine Learning Studio で初めてのデータ サイエンス実験を作成する
・・・をやってみる。。。。
https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-create-experiment#step-1-get-data

まず、
https://studio.azureml.net
に入る。here Sgin in

実験用のサンプルデータをDL、workspaceへ。

左下の [+新規] をクリックして新しい実験を作成し、[EXPERIMENT (実験)] を選択してから [Blank Experiment (空の実験)] を選択・・・

実験の名前をわかりやすい名前に変更
「‎20170815_price_prospect」へ。

サンプルデータをドラッグ入力。
(図1)

visualizationで一応データ確認
(図2)

データを準備ーーー
値が不足している場合には、これらの不足値をクリーニング(=除く)する必要があります。。。。と。

「select column in dataset」を選択モジュールから見つけて、実験キャンバスにドラッグ・・
(図3)

データセットの出力ポートを、データセット内の列の選択モジュールの入力ポートに接続
(図4)

[プロパティ] ウィンドウの [Launch column selector (列セレクターの起動)] をクリック
(図5)

列セレクターの起動と “normalized-losses” 列の除外”
(図6)

見つからないデータのクリーンアップ モジュールを実験キャンバスにドラッグして、データセット内の列の選択モジュールに接続。
[Cleaning mode (クリーニング モード)] の下の [Remove entire row (行全体を削除)] を選択。
(図7)

ページの下部の [実行] をクリックして、実験を実行。
右上隅にも [実行が完了しました] というステータスが表示。
(でも、ここまで実験で実行したことは、データのクリーンアップのみです、、、と。)

特徴を定義するーーー
データセット内の列の選択モジュールを、実験キャンバスにドラッグ。
見つからないデータのクリーンアップ モジュールの左側の出力ポートを、データセット内の列の選択モジュールの入力に接続。
(図8)

学習アルゴリズムを選択して、適用するーーーー

データの分割モジュールを選択して実験キャンバスにドラッグし、最後のデータセット内の列の選択モジュールに接続。
データの分割モジュールをクリックして選択。

プロパティを 0.75 に設定します。
このようにして、データの 75% をモデルのトレーニングに使用し、25% をテスト用に保持しておきます
(図9)

モデルのトレーニング モジュールを見つけて、実験にドラッグ。
線形回帰モジュールの出力を、モデルのトレーニング モジュールの左側の入力に接続。
次に、データの分割モジュールのトレーニング データ出力 (左側のポート) を、
モデルのトレーニング モジュールの右側の入力に接続

モデルのトレーニング モジュールを選択して、[プロパティ] ウィンドウの [起動列セレクター] をクリックし、
[価格] 列を選択します。 これが、作成しているモデルで予測する値です。

新しい自動車の価格を予測ーーーー
これまでにデータの 75% を使用してモデルをトレーニングしました。
ここからは残りの 25% のデータにスコアを付け、モデルの機能の効果を確認します。

実験を実行して、モデルのスコア付けモジュールの出力を表示します
(モデルのスコア付けの出力ポートをクリックして、[視覚化] を選択します)。
出力に、予測された価格の値と、テスト データから既知の値が表示されます。
(図10)
(図11)

モデルの評価モジュールの出力を表示するには、出力ポートをクリックして、[視覚化] を選択します
(図12)

平均絶対誤差 (MAE): 絶対誤差の平均 ( 誤差 とは、予測された値と実際の値との差)。
二乗平均平方根誤差 (RMSE): テスト データセットに対して実行した予測の二乗誤差平均の平方根。
相対絶対誤差: 実際の値とすべての実際の値の平均との絶対差を基準にした絶対誤差の平均。
相対二乗誤差: 実際の値とすべての実際の値の平均との二乗差を基準にした二乗誤差の平均。
決定係数: R-2 乗値ともいいます。どの程度モデルが高い精度でデータと適合するかを示す統計指標。

画像は、以下にまとめて・・・・

[0303]_Azure MLって何?から、まずやってみる★

Azure MLって何? から
http://www.atmarkit.co.jp/ait/articles/1411/18/news103.html
をやってみる。

まず、無料のアカウントを作成
https://azure.microsoft.com/ja-jp/free/
より。
(図1)

サインアップ後、メールが到着、クリックすると管理画面へ
(図2)

(図3)

ワークスペース作成、左上の新規をクリック
メニューが進化してる。
「Data+Analytics」「MAchine Learning Web Srvice」を選択
(図4)

Machine Learning ワークスペースを作成
20170815_trial_1
20170815_wkl_1
20170815_rsgroup_1
(図5)

何か出来た・・・
(図6)

トップ画面のタイルにも。・・・
(図7)

Machine Learning Studioを起動する
(図8)

また、Sign-in?・・・・
(図9)

一応、Experimentsに入りました・・「samples」をクリック
(図10)

DataSetのsamplesをクリックで、サンプルらしくものが一覧・・・
(図11)

左下のNewボタンでメニューが変わる・・
サンプルのRecommender Reataurant ratingsを選んでみる・・・・
(図12)

勝手にフローチャート図が出来上がって・・・
(図13)

サンプルデータがのぞける・・・
(図14)

「Initialize Model」「Train」「Score」で機械学習のアルゴリズムだと・・・
さて、Runの後、outputを見ると、、、何か出た。
(図15)

更に信頼度っかな?「1」に近づくほど正確との事。
「0.9202」は、、」なかなか高精度との事・・・
(図16)

ここからWebServiceにしてデプロイする、、にトライ。・・・
まずは、編集用に「Save As」で保存。

Publish to Valleryを押してみる・・・
(図17)
吹き出しが連続・・・
(図18)
(図19)
(図20)
(図21)

Publishing Gallery・・・らしい
(図22)
(図23)
(図24)
(図25)

出来たみたい・・・
Your experiment has been published
https://gallery.cortanaintelligence.com/Experiment/Recommender-Restaurant-ratings-Copy20170815-2
(図26)

うーーん、結果をWebに載せてあれこれ言える仕組みまであるのか・・・
はて、どう応用しようか??

以上

<図は、ここからまとめて・・>

ちなみに、・・・・・・・・・・・・・・・・・・

Propertiesを替えて、再度publish to Galleryを押下

Your experiment has been published
https://gallery.cortanaintelligence.com/Experiment/Recommender-Restaurant-ratings-Copy20170815-1

出来たが、先ほどの
https://gallery.cortanaintelligence.com/Experiment/Recommender-Restaurant-ratings-Copy20170815-2
はどうなったか?・・・と。

あれ?どちらも同じもの??、すなわち1PJでは1WEBだけ結果表示みたい??

302_sakuravps2_WP_マルチサイト_容量拡大★

いやー苦労した!
マルチサイト化したWordPressでアップロードファイルの最大サイズを変更してみた。

マルチサイト化したWordPressでアップロードファイルの最大サイズを変更してみた。


のおかげ!!!

答えは、
「WordPressの管理者用サイトにログインしてメニューの 参加サイト>サイトネットワーク管理者>設定 を選択し、アップロードファイルの最大サイズの欄の数字を編集します。」

/etc/php.ini
の編集
upload_max_filesize < post_max_size < memory_limit の3記述は、マルチサイトでは、優先されないようです。 でも、管理者用サイトにログインで設定して(仮:70M)、 php.iniを upload_max_filesize(70M) < post_max_size(90M) < memory_limit(100M) すなわち memory_limit 100M post_max_size 90M upload_max_filesize 70M にしても、30Mしか設定できなかったなあ・・・・。。 まあ、しばらく様子見。 以上

301_sakuravps2_WP_マルチサイト_NotFound対応★

参考
http://www.airy.org/blog/eng/?m=201307&paged=2
に助けてもらいました。

OSとインストール方法
CentOS,RHEL,Fedoraなど(パッケージ)なので、
ディレクトリ
/etc/httpd/conf/

(修正前)
httpd.conf
AllowOverride None
↓↓↓↓↓↓↓↓↓↓↓
(修正後)
httpd.conf
AllowOverride FileInfo
でなんとか解決。ありがとうございます。

以上

300_php_MySQL_全件表示_OK!★

php_MySQL_全件表示_です。
いまさら、復習。。コピペで対処!

/var/www/html/photo_check_20170731
20170809_rank_test.php
をいじくる。
表示は、
http://153.126.154.106/photo_check_20170731/20170809_rank_test.php

————————————–
SQL 合計値からランキングを取得する例
指定ユーザーの順位を取得する
http://qiita.com/hmuronaka/items/1afc132ddf400363efc2
参考

SELECT MAX( happiness ) FROM `emo_list` WHERE 1

SELECT * FROM emo_list where (id = (select MAX( id ) from emo_list))

SELECT (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC (下記サンプル) set @c:=0; SELECT tmp.rank FROM ( SELECT id, @c := @c +1 rank FROM emo_list ORDER BY happiness DESC )tmp WHERE `id`=111 ============= ============= id最大値のhappinessの順位を求める(1) 指定ユーザーの順位を取得するOK ============= set @c:=0; SELECT tmp.rank FROM ( SELECT id, @c := @c +1 rank FROM emo_list ORDER BY happiness DESC )tmp WHERE (id = (select MAX( id ) from emo_list)) ============= 全順位取得を求める(2)OK ============= set @c=0; select @c:=@c+1 as rank, id, @p:=happiness as happiness_scores from emo_list ORDER BY happiness DESC ; ============= 指定した順位を取得する(3) 1位から10位までの表示OK ============= set @c:=0; SELECT tmp.id id, tmp.photoname photoname,tmp.happiness happiness, tmp.rank rank FROM (SELECT id, photoname, happiness, @c:=@c+1 rank FROM emo_list ORDER BY happiness DESC) tmp ORDER BY rank asc LIMIT 0, 10; ============= http://www.phpbook.jp/tutorial/pdo/index7.html を参考にSELECT表示OK! ファイル名: 20170809_rank_test.php ============= $sql1 = 'select id from emo_list where (id = (select MAX( id ) from emo_list)) '; $stmt1 = $dbh->query($sql1);

$result = $stmt1->fetch(PDO::FETCH_NUM);
print($result[0]);
print($result[1]);
print($result[2]);
print($result[3]);
=============

set @c:=0;
SELECT tmp.id, tmp.rank rank FROM
(SELECT id, @c:=@c+1 rank FROM emo_list ORDER BY happiness DESC) tmp
WHERE (id = (select MAX( id ) from emo_list));

これも、MySQL-adminではOK!
=============

=============
同スコアは順位同じにする場合
は、MySQL-adminではOK!
=============

count(total_score)の場合の結果/OK!<---これが良いかも??一般的!★ SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC は、MySQL-adminではOK! count(DISTINCT total_score)の場合の結果/OK! SELECT id, photoname, happiness, (select count(DISTINCT happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC は、MySQL-adminではOK! ============= ============= 13.2.5.1 INSERT ... SELECT 構文 https://dev.mysql.com/doc/refman/5.6/ja/insert-select.html でOK ============= DELETE FROM emo_list_rank WHERE 1; INSERT INTO emo_list_rank SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC ; =============★★★★★ ついにできました!! このPhotoは、全22件のうち 第 1位のHappiness度です! の表示!!! =============★★★★★ $sql1 = 'SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC '; $stmt1 = $dbh->query($sql1);
$result = $stmt1->fetch(PDO::FETCH_NUM);

$sql2 = ‘SELECT count(*) FROM emo_list_rank ‘;
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetch(PDO::FETCH_NUM);

print(‘#1—- :’.$result[0].”
“);
print(‘#2—- :’.$result[1].”
“);
print(‘#3—- :’.$result[2].”
“);
print(‘#4—- :’.$result[3].”
“);

print(‘このPhotoは、全’.$result2[0].”件のうち
“);
print(‘第 ‘.$result[3].”位のHappiness度です!
“);

=============★★★★★

DELETE FROM emo_list_rank WHERE 1; INSERT INTO emo_list_rank SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC ; $sql0 = <<query($sql0);
$result0 = $stmt0->fetch(PDO::FETCH_NUM);

$sql1 = <<query($sql0);
$result0 = $stmt0->fetch(PDO::FETCH_NUM);

$sql1 = <<query($sql1);
$result = $stmt1->fetch(PDO::FETCH_NUM);

$sql2 = ‘SELECT count(*) FROM emo_list_rank ‘;
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetch(PDO::FETCH_NUM);

$sql3 = ‘SELECT rank FROM emo_list_rank WHERE (id = (select MAX( id ) from emo_list))’;
$stmt3 = $dbh->query($sql3);
$result3 = $stmt3->fetch(PDO::FETCH_NUM);

print(‘
‘);

print(‘このPhotoは、全’.$result2[0].”件のうち
“);
print(‘第 ‘.$result3[0].”位のHappiness度です!
“);

★★★★★★★★★★★★★★★★★★★★

————————————–

下記、生コード。

ーーーーーーーーーーーーー
$sql4 = ‘select * from emo_list_rank’;
$stmt4 = $dbh->query($sql4);

print(‘
emo_list_rankテーブル全表示
‘);

?>

fetch(PDO::FETCH_NUM)){
print(‘

‘);
print(‘

‘);
print(‘

‘);
print(‘

‘);
print(‘

‘);
print(‘

‘);
}
?>

id photoname happiness rank
‘.$result4[0].’ ‘.$result4[1].’ ‘.$result4[2].’ ‘.$result4[3].’

299_全22件のうち 第 1位のHappiness度です!_完成!★

SQL 合計値からランキングを取得する例
指定ユーザーの順位を取得する
http://qiita.com/hmuronaka/items/1afc132ddf400363efc2
参考

SELECT MAX( happiness ) FROM `emo_list` WHERE 1

SELECT * FROM emo_list where (id = (select MAX( id ) from emo_list))

SELECT (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC (下記サンプル) set @c:=0; SELECT tmp.rank FROM ( SELECT id, @c := @c +1 rank FROM emo_list ORDER BY happiness DESC )tmp WHERE `id`=111 ============= ============= id最大値のhappinessの順位を求める(1) 指定ユーザーの順位を取得するOK ============= set @c:=0; SELECT tmp.rank FROM ( SELECT id, @c := @c +1 rank FROM emo_list ORDER BY happiness DESC )tmp WHERE (id = (select MAX( id ) from emo_list)) ============= 全順位取得を求める(2)OK ============= set @c=0; select @c:=@c+1 as rank, id, @p:=happiness as happiness_scores from emo_list ORDER BY happiness DESC ; ============= 指定した順位を取得する(3) 1位から10位までの表示OK ============= set @c:=0; SELECT tmp.id id, tmp.photoname photoname,tmp.happiness happiness, tmp.rank rank FROM (SELECT id, photoname, happiness, @c:=@c+1 rank FROM emo_list ORDER BY happiness DESC) tmp ORDER BY rank asc LIMIT 0, 10; ============= http://www.phpbook.jp/tutorial/pdo/index7.html を参考にSELECT表示OK! ファイル名: 20170809_rank_test.php ============= $sql1 = 'select id from emo_list where (id = (select MAX( id ) from emo_list)) '; $stmt1 = $dbh->query($sql1);

$result = $stmt1->fetch(PDO::FETCH_NUM);
print($result[0]);
print($result[1]);
print($result[2]);
print($result[3]);
=============

set @c:=0;
SELECT tmp.id, tmp.rank rank FROM
(SELECT id, @c:=@c+1 rank FROM emo_list ORDER BY happiness DESC) tmp
WHERE (id = (select MAX( id ) from emo_list));

これも、MySQL-adminではOK!
=============

=============
同スコアは順位同じにする場合
は、MySQL-adminではOK!
=============

count(total_score)の場合の結果/OK!<---これが良いかも??一般的!★ SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC は、MySQL-adminではOK! count(DISTINCT total_score)の場合の結果/OK! SELECT id, photoname, happiness, (select count(DISTINCT happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC は、MySQL-adminではOK! ============= ============= 13.2.5.1 INSERT ... SELECT 構文 https://dev.mysql.com/doc/refman/5.6/ja/insert-select.html でOK ============= DELETE FROM emo_list_rank WHERE 1; INSERT INTO emo_list_rank SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC ; =============★★★★★ ついにできました!! このPhotoは、全22件のうち 第 1位のHappiness度です! の表示!!! =============★★★★★ $sql1 = 'SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC '; $stmt1 = $dbh->query($sql1);
$result = $stmt1->fetch(PDO::FETCH_NUM);

$sql2 = ‘SELECT count(*) FROM emo_list_rank ‘;
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetch(PDO::FETCH_NUM);

print(‘#1—- :’.$result[0].”
“);
print(‘#2—- :’.$result[1].”
“);
print(‘#3—- :’.$result[2].”
“);
print(‘#4—- :’.$result[3].”
“);

print(‘このPhotoは、全’.$result2[0].”件のうち
“);
print(‘第 ‘.$result[3].”位のHappiness度です!
“);

=============★★★★★

DELETE FROM emo_list_rank WHERE 1; INSERT INTO emo_list_rank SELECT id, photoname, happiness, (select count(happiness) FROM emo_list b WHERE a.happiness < b.happiness) + 1 rank FROM emo_list a ORDER BY rank ASC ; $sql0 = <<query($sql0);
$result0 = $stmt0->fetch(PDO::FETCH_NUM);

$sql1 = <<query($sql0);
$result0 = $stmt0->fetch(PDO::FETCH_NUM);

$sql1 = <<query($sql1);
$result = $stmt1->fetch(PDO::FETCH_NUM);

$sql2 = ‘SELECT count(*) FROM emo_list_rank ‘;
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetch(PDO::FETCH_NUM);

$sql3 = ‘SELECT rank FROM emo_list_rank WHERE (id = (select MAX( id ) from emo_list))’;
$stmt3 = $dbh->query($sql3);
$result3 = $stmt3->fetch(PDO::FETCH_NUM);

print(‘
‘);

print(‘このPhotoは、全’.$result2[0].”件のうち
“);
print(‘第 ‘.$result3[0].”位のHappiness度です!
“);

★★★★★★★★★★★★★★★★★★★★

以上

298_htmlとupload.phpを作る2_MySQL_DB渡し_完成!★

ようやくできました!!!!!!!!!!

場所は、
/var/www/html/photo_check_20170731
ファイルは、
20170806_upload_exec1.php

コードは、以下。
——————————————-



sample

‘;
echo $fullPath;
echo ‘

‘;

$dsn = ‘mysql:dbname=201*********on;host=ik1-31************************e.jp’;
$user = ‘r********’;
$password = ‘Aa************90’;

try{
$dbh = new PDO($dsn, $user, $password);

print(‘
‘);

if ($dbh == null){
print(‘接続に失敗しました。
‘);
}else{
print(‘MySQL-DB接続に成功しました。
‘);
}

// is_array関数で配列かどうか判定する
if(is_array($outpara)) {

// 配列だったらforeach関数でループ処理
foreach ($outpara as $resout) {

if (strstr($resout, ‘anger’)) {
echo ‘
‘; //because top return
echo “(怒り) “;
echo $resout;
$ange=$resout;
$a=$ange;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$ange1=substr($a,$b+1,$c-$b-1);
echo $ange1;
echo ‘
‘;
}

if (strstr($resout, ‘contempt’)) {
echo “(軽蔑) “;
echo $resout;
$cont=$resout;
$a=$cont;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$cont1=substr($a,$b+1,$c-$b-1);
echo $cont1;
echo ‘
‘;
}
if (strstr($resout, ‘disgust’)) {
echo “(嫌悪) “;
echo $resout;
$disg=$resout;
$a=$disg;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$disg1=substr($a,$b+1,$c-$b-1);
echo $disg1;
echo ‘
‘;
}

if (strstr($resout, ‘fear’)) {
echo “(恐怖) “;
echo $resout;
$fear=$resout;
$a=$fear;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$fear1=substr($a,$b+1,$c-$b-1);
echo $fear1;
echo ‘
‘;
}

if (strstr($resout, ‘happiness’)) {
echo “(幸福) “;
echo $resout;
$happ=$resout;
$a=$happ;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$happ1=substr($a,$b+1,$c-$b-1);
echo $happ1;
echo ‘
‘;
}

if (strstr($resout, ‘neutral’)) {
echo “(通常) “;
echo $resout;
$neut=$resout;
$a=$neut;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$neut1=substr($a,$b+1,$c-$b-1);
echo $neut1;
echo ‘
‘;
}

if (strstr($resout, ‘sadness’)) {
echo “(悲観) “;
echo $resout;
$sadn=$resout;
$a=$sadn;
$b=strpos($a,”:”);
$c=strpos($a,’,’);
$sadn1=substr($a,$b+1,$c-$b-1);
echo $sadn1;
echo ‘
‘;
}

if (strstr($resout, ‘surprise’)) {
echo “(驚き) “;
echo $resout;
$surp=$resout;
$a=$surp;
$b=strpos($a,”:”);
$surp1=substr($a,$b+1,7); //because this is last raw…..
echo $surp1;
echo ‘
‘;
echo “—————————“;

///////

// INSERT文を変数に格納
$sql = “INSERT INTO emo_list (dt_stamp, photoname, anger, contempt, disgust, fear, happiness, neutral, sadness, surprise, memo) VALUES (now(), :fn, :ange, :cont, :disg, :fear, :happ, :neut, :sadn, :surp, ‘data from 2017/08/08’)”;

// 挿入する値は空のまま、SQL実行の準備をする
$stmt = $dbh->prepare($sql);

// 挿入する値を配列に格納する
$params = array(‘:fn’ => $fn, ‘:ange’ => $ange1, ‘:cont’ => $cont1, ‘:disg’ => $disg1, ‘:fear’ => $fear1, ‘:happ’ => $happ1, ‘:neut’ => $neut1, ‘:sadn’ => $sadn1, ‘:surp’ => $surp1);

// 挿入する値が入った変数をexecuteにセットしてSQLを実行
$stmt->execute($params);

// 挿入する値が入った変数をexecuteにセットしてSQLを実行
$stmt->execute($params);

///////

}
}

// 配列じゃなかったらエラーメッセージを表示
} else {
echo ‘ありません。’;
}

// 登録完了のメッセージ
echo ‘
MySQL-DB登録完了しました’;

}catch (PDOException $e){
print(‘Error:’.$e->getMessage());
die();
}

$dbh = null;

?>


——————————————-

以上

297_htmlとupload.phpを作る2_python変数渡し★

/var/www/html/photo_check_20170731

20170806_upload_exec1.php
を編集

responseのデータを$変数に渡して、DBに保存しやすい形にする。
参考は、

文字列を操作するPHPの便利な関数

文字列を操作するPHPの便利な関数


PHPのsubstr関数で文字列の一部を取得する方法【初心者向け】
https://techacademy.jp/magazine/11430

大事なのは、
(例)
: 0 . 1 2 3 ,
8 9 10 11 12 13 14 15
1 2 3 4 5 6 7
とすると、
$b = 8
$b+1= 9
$c = 15
$c-$b=15-8=7だとカンマが入るので、-1して
$c-$b-1
となる事!!

だからロジックは、
if (strstr($resout, ‘happiness’)) {
echo “(幸福) “;
echo $resout;
echo ‘
‘;
$happ=$resout;★
$a=$happ;★
$b=strpos($a,”:”);★
$c=strpos($a,’,’);★
echo substr($a,$b+1,$c-$b-1);★
echo ‘
‘;
}

以上