[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 ‘
‘;
}

以上

296_htmlとupload.phpを作る★

htmlとupload.phpを作る
(図1)

(図2)

まず
/var/www/html/photo_check_20170731
で仕事

1.サンプル195を参考に、upload.phpをコピー、修正

2.サンプル
http://153.126.154.106/php_emotion_20170728/20170728photo.html
をコピー、修正

http://153.126.154.106/photo_check_20170731/20170806_pho.html
として製造

# chmod 777 files
をしておく

3.上記2と1を連携して、ファイルがfilesにアップロードされるか?確認

なんとかOK!

4.API/AIとつなぐ。。

http://www.python-izm.com/contents/basis/command_line_arguments.shtml
を参考
(例:実行コマンド)
# python test_argv.py python izm com
を実行すると、
# -*- coding: utf-8 -*-
(例:コード)
import sys

args = sys.argv

print args
print u’第1引数:’ + args[1]
print u’第2引数:’ + args[2]
print u’第3引数:’ + args[3]

(例:解説)
5行目の「sys.argv」に起動時に設定した引数が格納されます。
リストで値が返されますが、最初の要素には実行ファイル名が入りますので注意しましょう。

・・・より

「20170731_photo_detect2.py」を作成し、
「20170731_photo_detect2.py ファイル名」
で実行し動くようにする。

###20170806,”20170731_photo_detect2.py+falename” making
#
import sys
args = sys.argv
#

を追加し、

(旧)body = “{‘url’:’http://153.126.154.106/photo_check_20170731/files/20110826oresama.JPG’}”
(新)body = “{‘url’:’http://153.126.154.106/photo_check_20170731/files/”+args[1]+”‘}”
として、
コマンド
「# python 20170731_photo_detect2.py 20110826oresama.JPG」
を実行してみる・・・>>OK!成功!!

では、つなげてみるか・・・・

http://153.126.154.106/photo_check_20170731/20170806_pho1.html

あれ?あっさりOK?
**********
結果
**********
20110826oresama.JPGをアップロードしました。
python ./20170731_photo_detect2.py 20110826oresama.JPG

neutralが含まれています。(20170806 19:35ここから)↓
“neutral”: 0.876,
neutralが含まれています。(20170806 19:35ここまで)↑
**********

ねんのため。もう一丁!
**********
結果
**********
1448158857484.jpgをアップロードしました。
python ./20170731_photo_detect2.py 1448158857484.jpg

neutralが含まれています。(20170806 19:35ここから)↓
“neutral”: 0.999,
neutralが含まれています。(20170806 19:35ここまで)↑
**********

http://153.126.154.106/photo_check_20170731/20170806_pho1.html

**********
結果
**********
20110826oresama.JPGをアップロードしました。
python ./20170731_photo_detect2.py 20110826oresama.JPG

(怒り) “anger”: 0.0,
(軽蔑、侮辱) “contempt”: 0.001,
(嫌悪) “disgust”: 0.0,
(恐怖) “fear”: 0.0,
(幸福、幸せ) “happiness”: 0.123,
(通常、中立) “neutral”: 0.876,
(悲観) “sadness”: 0.0,
(驚き) “surprise”: 0.0
**********

1448158857484.jpgをアップロードしました。
python ./20170731_photo_detect2.py 1448158857484.jpg

(怒り) “anger”: 0.0,
(軽蔑、侮辱) “contempt”: 0.0,
(嫌悪) “disgust”: 0.0,
(恐怖) “fear”: 0.0,
(幸福、幸せ) “happiness”: 0.0,
(通常、中立) “neutral”: 0.999,
(悲観) “sadness”: 0.0,
(驚き) “surprise”: 0.0

良い感じですね!!!!

(以上)

295_PHP から Python のプログラムを実行させる★

PHP から Python のプログラムを実行させる方法
http://freetech-e.com/html/callpython.htm
を参考
————————-
/var/www/html/php_emotion_20170728/
20170805_call_python.php
————————-
<?php
// file name: 20170805_call_python.php

$fullPath =
‘python ./20170730_emo.py’;

    exec($fullPath, $outpara);
    echo ‘<PRE>’;
    var_dump($fullPath);
    var_dump($outpara[0]);
    var_dump($outpara[1]);
    var_dump($outpara[2]);
    var_dump($outpara[3]);
    echo ‘<PRE>’;
?>
————————-
————————-
上記のWeb結果
————————-
string(24) “python ./20170730_emo.py”
string(263) “[{“faceRectangle”:{“height”:406,”left”:863,”top”:151,”width”:406},”scores”:{“anger”:9.52410346E-07,”contempt”:0.000829975063,”disgust”:7.344764E-07,”fear”:2.54277044E-10,”happiness”:0.1160154,”neutral”:0.8831446,”sadness”:7.53089944E-06,”surprise”:7.734229E-07}}]”
NULL
NULL
NULL
————————-
http://153.126.154.106/php_emotion_20170728/20170805_call_python.php
で、Web表示までOK。。。
ならあとは変数の受け渡しができれば、、、PHPとPython連携でAI・APIつくれるかな。。。
まあ、こっちも作ってみて、
————————-
/var/www/html/photo_check_20170731
20170805_call_py1.php
————————-
<?php
// file name: 20170805_call_python.php

$fullPath =
‘python ./20170731_photo_detect1.py’;

    exec($fullPath, $outpara);
    echo ‘<PRE>’;
    var_dump($fullPath);
    var_dump($outpara[0]);
    var_dump($outpara[1]);
    var_dump($outpara[2]);
    var_dump($outpara[3]);
var_dump($outpara[4]);
var_dump($outpara[5]);
var_dump($outpara[6]);
var_dump($outpara[7]);
    var_dump($outpara[8]);
var_dump($outpara[9]);
var_dump($outpara[10]);
    var_dump($outpara[11]);
    var_dump($outpara[12]);
    var_dump($outpara[13]);
    var_dump($outpara[14]);
    var_dump($outpara[15]);
    var_dump($outpara[16]);
    var_dump($outpara[17]);
    var_dump($outpara[18]);
    var_dump($outpara[19]);
    var_dump($outpara[20]);
echo ‘<PRE>’;
?>
http://153.126.154.106/photo_check_20170731/20170805_call_py1.php
OKだけど、、、表示数が多くて表示しきれなかった。。。。
https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395239
をみると、似ているかチェックは、??
————————-
/var/www/html/photo_check_20170731
20170805_call_py2.php
————————-
http://153.126.154.106/photo_check_20170731/20170805_call_py2.php
————————-
<?php
// file name: 20170805_call_python.php
$fullPath =
      ‘python ./20170731_photo_detect1.py’;
    exec($fullPath, $outpara);
    echo ‘<PRE>’;
    echo $fullPath;
// is_array関数で配列かどうか判定する
if(is_array($outpara)) {
  // 配列だったらforeach関数でループ処理
  foreach ($outpara as $resout) {
    echo $resout;
    echo ‘<br>’;
  }
// 配列じゃなかったらエラーメッセージを表示
} else {
  echo ‘ありません。’;
}
?>
で、配列のすべての表示はできた。。。。
指定文字だけできるかな???
 if (strstr($resout, ‘neutral’)) {
    echo “neutralが含まれています。”.'<br>’;
    echo $resout;
    echo ‘<br>’;
 }
よし!取り出し成功!!!!!