Python関連のことを調べてみた2020年11月16日

Python関連のことを調べてみた2020年11月16日

mnistの数字たちを教師なし学習で分類してみた【PCA、t-SNE、k-means】

## はじめに

教師なし学習は一般的に教師あり学習と比較すると精度が落ちますが、その代わりに様々なメリットがあります。具体的に教師なし学習が役に立つシーンとして

**- パターンがあまりわかっていないデータ
– 時間的に変動するデータ
– 十分にラベルがついていないデータ**

などが挙げられます。

教師なし学習ではデータそのものから、データの背後にある構造を学習します。これによってラベルのついていないデータをより多く活用できるので、新たなアプリケーションへの道が開けるかもしれません。

この記事では、**mnistのデータを教師なし学習により分類の実装例**を紹介します。
手法は主成分分析とt-SNE、k-means法を用います。
続編の記事では、オートエンコーダを用いた分類にもチャレンジしてみたいと考えています。

## この記事でやること

**- mnistデータを教師なし学習で分類
– PCA + k-means法による分類の実装と評価
– PCA+t-SNE + k-means法による分類の実装と評価**

## ライブラリのインポート
“` python:
imp

元記事を表示

Glue Studio【AWS】

# はじめに

この記事では、2020年9月23日にリリースされた Glue Studio を利用して GUI ベースで Glue ジョブの作成と実行そしてモニタリングを行います。

# AWS Glue
> AWS Glue は、Apache Spark のパワーを使用して分析用のデータセットを準備および処理するサーバーレス環境を提供します。

>       [AWS Glue Documentation](https://docs.aws.amazon.com/glue/index.html)
      [Optimize memory management in AWS Glue](

元記事を表示

【Kaggle初心者向け】Titanic(LightGBM)

## ■ はじめに
今回は下記コンペに、LigthGBMで取り組みましたので
簡単にまとめてみました。

【概要】
・[Titanic: Machine Learning from Disaster](https://www.kaggle.com/c/titanic)
・沈没する船「タイタニック号」の乗客情報をもとに、助かる人とそうでない人について判別する

【対象とする読者】
・Kaggle初心の方
・LightGBMの基礎コードについて学びたい方

## 1. モジュールの用意
“`python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import lightgbm as lgb
from sklearn.metrics i

元記事を表示

Poetryで始めるPython開発チームの環境統一

# Poetryで始めるPython開発チームの環境統一
## 概要
とある開発現場の環境を覗かせてもらったときのことでした。
**環境構築手順は口頭**で伝えられ、Windows上にAnacondaをインストールし追加パッケージをpipで入れていく。
もちろん**バージョン指定はない**ので、その時の最新版が入れられるため参入タイミング次第でマイナーバージョンに差が出てしまう。会社を跨ぐ大規模なチームではA社で動くのにB社で動かないなんてことも……。
**Lintやフォーマッタの導入も任意**なので、gitのコミットログは**追加修正した部分とフォーマットされた箇所のdiffが同居**してしまい、ソースレビューは時間がかかる。

開発チーム全員のPython動作環境を統一しませんか?
コード規約に従ってメンテナンスしやすい綺麗なソースを作りませんか?

エンジニアの働き方改革を**Poetry**で始めてみましょう!

## ゴール

1. Poetryを利用した環境のコード化と、チームメンバへの配布方法が理解できるようになる。
2. プロジェクトテンプレートを手に入れて、開発のスタ

元記事を表示

Pythonによる線形代数:A=LU分解

# A=LU 消去と分解

3×3の行列$A$を消去により対角要素にピボットをもつ上三角行列$U$と下三角行列$L$に分解できることを確認する。

## 消去による対角要素にピボットをもつ上三角行列の取得

Uは対角要素にピボットをもつ上三角行列である。Lは下三角行列である。Aは消去の手順を通して上三角行列と下三角行列に分解することができる。

“`math
A=\left(
\begin{array}{cc}
1 & 2 & 1 \\
0 & 1 & 1 \\
2 & 7 & 9 \\
\end{array}
\right)
“`
とすると、$A$の3行1列目の要素2を消去するには3行目から1行目の2倍を引く。

“`math
\left(
\begin{array}{cc}
1 & 2 & 1 \\
0 & 1 & 1 \\
0 & 3 & 7 \\
\end{array}
\right)
“`
つぎに3行目2列目の要素3は2行目を3倍して3行目から引くこ

元記事を表示

VPC内のLambdaからはSES向けのVPCエンドポイントを使用してもBoto3ではメールを送信できない

# 初めに

本記事はタイトルについて検証を行った詳細を記載します

書くきっかけですが、最近久しぶりにVPCと戯れることになりました。
VPCを使った構成ですんなり行った思い出はなく、実際に沼にハマりました。

ポイントをまとめましたので、どなたかのお役にたてば嬉しいです

結論だけ知りたい方は最後まで飛ばしてください

# 検証を行うことになった背景

**VPC内のLambdaからメールを送る**
ただこちらを行いたいだけでした

アーキテクチャとしては以下となります
RDS→Lambda(VPC内)→SES→ユーザー

あまり見ないアーキテクチャですね
RDS Proxyがリリースされてから、LambdaとRDSの組み合わせは使用する頻度が多くなりました
DynamoDBだけでは辛い部分もあるので、今後こちらのアーキテクチャは増えるようになるのではないでしょうか

実装するに当たって、どのようにVPCから外へ出るか調べていました
すると、2020年5月に[SES向けのVPCエンドポイント](https://aws.amazon.com/jp/blogs/news/new-ama

元記事を表示

【Python】Line APIを使う [第一回 美女Botの作成]

# モチベーション
最近女の子とラインをしていない…
すぐに返信してくれてかつ可愛い子はいないものか。
linebotを活用することで実現できるのではないか?

このようなしょうもない理由でlinebotの作成をしようと思う。

# 環境
・mac Catalina
・Docker version 19.03.13
・Flask 1.1.2
・Python 3.8.3
・docker-compose version 1.27.4
・heroku 7.45.0
・bash

# 今回作成するもの
まずは環境構築として、dockerからherokuにコンテナを移動し起動するまでをする。
LINEBOTはおはようと言ったらおはようと返してくれる美人のbotを作成する。
あくまで非リアだからこんなことしてるわけでないことに注意!

# 流れ
第一回の流れを記す。

**1.LINE Developersの登録**
**2.pythonファイルの作成**
**3.Dockerfileとdocker-compose.ymlの作成**
**4.herokuへのアップロード**

最終的なファイル

元記事を表示

Macでmatplotlib+cartopyの環境構築

# はじめに

気象データを Python を使って地図とともに可視化するためには、matplotlib と cartopy を使うことが一般的です。そのための環境を Anaconda (Miniconda) で構築する手順について述べます。手元のOSのバージョンは macOS Catalina 10.15.7 です。

# Anaconda (Miniconda) のインストール

[Anaconda](https://www.anaconda.com/) はパッケージ管理や仮想環境の作成ができるPythonのディストリビューションです。pyenv と pip を使って同等のことが出来ますが、依存するプログラムを同時にインストールできて便利なのでこちらを使う事にします。

[Miniconda](https://docs.conda.io/en/latest/miniconda.html) は Anaconda の最小構成版です。初期にインストールされるパッケージが少なく、ディスク容量をとらないメリットがあるのでこれを導入することにします。

“`shell
# インストーラーのダ

元記事を表示

AWS Lambdaでpythonプログラムの定期実行

#はじめに
AWSのlambdaを使用して、スケジュール実行のプログラムを設置しました。
lambdaの基本的なことで意外とつまったので残しておきます。
AWSのアカウントは作成しているものとしています。

MAC OS X
python 3.6

# 対象
・lambdaを触ったことのない方
・とりあえず何か動かして見たい方

#lambdaとは
スクリプトを実行することが出来るサーバーレスのサービスです。
サーバレスと言ってもスクリプトの実行時にのみサーバを起動するイメージです。

呼び出しはAWSの空いているサーバから行われるため、実行するサーバーは都度違います。
(固定IPを割り当てたサブネットにlambdaを設置して実行することでIPを固定にすることは出来ます)

無料使用枠が月ごとに100万件の無料リクエストと1秒あたり40万GBのコンピューティング時間あるので、たいてい無料枠で動かせます。WebやIOTのバックエンドのAPIとしても使えるのでめちゃくちゃ便利なサービスですね。

#簡易的なスクリプト作成
pythonでLambdaのスクリプトを作成する場合、 **lamb

元記事を表示

「画像でゴミ分類!」アプリ作成日誌day8~herokuデプロイ~

# はじめに
「画像でゴミ分類!」アプリ作成日誌8日目の今日はようやくデプロイしていきたいと思います。今回はPaaS(アプリケーションソフトを動かすためのデータベースや実行環境などを提供してくれるサービス)としてherokuを用いていきます。

<記事一覧>

– [「画像でゴミ分類!」アプリ作成日誌day1~データセットの作成~](https://qiita.com/eycjur/items/7d8223b28758c7dfaaa0)
– [「画像でゴミ分類!」アプリ作成日誌day2~VGG16でFine-tuning~](https://qiita.com/eycjur/items/3e954cb70dc15f996c2d)
– [「画像でゴミ分類!」アプリ作成日誌day3~Djangoでwebアプリ化~](https://qiita.com/eycjur/items/9c618538177c82f7fdc3)
– [「画像でゴミ分類!」アプリ作成日誌day4~Bootstrapでフロントエンドを整える~](https://qiita.com/eycjur/items/7b58c2

元記事を表示

AtCoder Beginner Contest 183 参戦記

# AtCoder Beginner Contest 183 参戦記

## [ABC183A – ReLU](https://atcoder.jp/contests/abc183/tasks/abc183_a)

1分で突破. 書くだけ.

“`python
x = int(input())

if x >= 0:
print(x)
else:
print(0)
“`

追記: 普段は `max(x, 0)` って書いてるなって思った.

“`python
x = int(input())

print(max(x, 0))
“`

## [ABC183B – Billiards](https://atcoder.jp/contests/abc183/tasks/abc183_b)

5分半で突破. こういう数学的なのがつらい…….

“`python
Sx, Sy, Gx, Gy = map(int, input().split())

print(Sx + (Gx – Sx) * Sy / (Sy + Gy))
“`

## [ABC183C – Tr

元記事を表示

【Python】初心者でスクレイピングする時に冒頭脳死して書けるコード

スクレイピングをするときに毎回毎回

“`python:test.py
from bs4 import BeautifulSoup
“`
とこのように記述するのが面倒くさいので、とりあえずこれ使っとけば間違いなしのテンプレートを作成します。

“`python:test.py
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium
!pip install requests-html
“`

まずはライブラリ関係。
私は普段clbを使っているので、とりあえずこれ入れとく。

“`python:test.py
import pandas as pd
import datetime
from tqdm.notebook import tqdm
import requests
from bs4 import BeautifulSoup
import time
import re
from u

元記事を表示

Pythonにおけるdestructorの挙動を確認

#サンプルコード *class_test.py*

“`Python3:class_test.py
class SampleClass:
num = 0
def __init__(self, number=1):
SampleClass.num +=1 # インスタンスが生成される度に、クラス変数numを1インクリメントする
self.num = number # インスタンス生成時に生成元から受け取った引数numberを、インスタンス変数numに格納する
def __del__(self):
SampleClass.num -=1 # インスタンスを削除する度に、クラス変数numを1デクリメントする
print(“このインスタンスを削除しました”)

“`

###上記のスクリプトファイルを格納したディレクトリと同じ階層で、Python3を起動

“`Python3:Terminal
$ ls
class_test.py
$ cat class_test.py
class SampleCl

元記事を表示

強化学習2 マルコフ決定過程・ベルマン方程式

[Aidemy](https://aidemy.net/) 2020/11/15
#はじめに
 こんにちは、んがょぺです!バリバリの文系ですが、AIの可能性に興味を持ったのがきっかけで、AI特化型スクール「Aidemy」に通い、勉強しています。ここで得られた知識を皆さんと共有したいと思い、Qiitaでまとめています。以前のまとめ記事も多くの方に読んでいただけてとても嬉しいです。ありがとうございます!
 今回は、強化学習の二つ目の投稿になります。どうぞよろしくお願いします。

*本記事は「Aidemy」での学習内容を「自分の言葉で」まとめたものになります。表現の間違いや勘違いを含む可能性があります。ご了承ください。

今回学ぶこと
・強化学習の構成要素
・マルコフ決定過程について
・価値、収益、状態
・最適な方策について
・ベルマン方程式について

#強化学習の構成要素
##N腕バンディッド問題と次のステップ
・Chapter1で扱ったN腕バンディッド問題は、__「即時報酬である」__点と、__「エージェントの行動によって状態が変化しない」__という点で一般的な問題よりも単純化された問題

元記事を表示

1. Pythonで学ぶ統計学 2-1. 確率分布[離散型変数]

* **離散型の確率変数**は、サイコロの目のように飛び飛びの値をとる変数のことで、例えば「1」の次は「2」、「2」の次は「3」というように、その間に 1.1, 1.2, 1.3, ・・・, 1.8, 1.9 などといった連続的な数値は存在しません。
* 主な**離散型の確率分布**について、scipy.statsの`pmf`(probability mass function : 確率質量関数)や`rvs`(random variates : 確率変数)を使ってその特徴を見ていきます。

“`python
# 数値計算ライブラリのインポート
import numpy as np
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame
# 可視化ライブラリのインポート
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
%matplotlib inline
# matplotl

元記事を表示

多言語からみるマルチコアの活かし方

# 多言語からみるマルチコアの活かし方
# はじめに
近年では1つのCPUに複数のコアが搭載されたマルチコアが一般的になっています。
しかし、現状のプログラミング言語ではエンジニアが意識せずにマルチコアをしたプログラムを作ることは難しいです。
そこで、様々な言語から見たマルチコアの活かし方について説明していきます。

# プロセスとスレッド
プロセスとは1つ1つのアプリケーションといった実行中のプログラムのことで、スレッドは CPU利用の単位です。プロセスは次のように1つ以上のスレッドを持っており、CPUのコア数分だけスレッドを処理することができます。(また、近年では[SMT](https://ja.wikipedia.org/wiki/%E5%90%8C%E6%99%82%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)という技術によって1つの物理コアで2スレッドといった複数のスレッドを処理することができます。2コア4スレッドみたいなやつです)
![スレ

元記事を表示

iOSで動作する異常検知モデルを作った

## 背景

農業x深層学習のアプリケーションが作りたい!

という動機のもと、例えば作物の画像を入力してその健康状態を診断するようなアプリが作れるんじゃないかと考えてます。

病気を判定できるすごいモデルのせたアプリを作ったとして、ユーザが対象の作物の画像を正しく入力してくれるかどうかは、そのアプリの信頼性を担保する上で重要な問題になります。

例えば、上記の稲の病気を診断してくれるアプリを作ったとして、ユーザが雑草の画像を入力したとしてもそれっぽい結果を出力してしまえば、そのアプリの診断結果自体が疑わしいものになってしまいます。

![IMG_0168.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494791/b3a5cebf-2c4d-0655-6931-b14160465f41.png)

この問題に対処するため、メインとなるモデルの前段に入力画像の異常画像検知モデルを置いておけばよいのでは、と考えました。

![IMG_0169.PNG](https://qiita-image-store

元記事を表示

[Blender×Python] 関数を自分でつくる&今までの総まとめ

この記事では、より多彩な処理を手軽に行うために関数を自分でつくる方法を紹介します。

#目次
0.関数とは
1.関数の種類
2.関数をつくるサンプルコード
3.英単語

#0.関数とは

関数とは、出力装置のようなものです。
引数の情報を受け取って、処理を実行します。

見た目は、“関数名(引数1,引数2,…)“のような形をしています。
引数は、パラメーターの役割を果たしています。
つまり、引数をいじると処理の結果が変わってきます。

その点、料理と似てます。
塩の量(パラメーター)をいじると、料理の味(出力)も当然変わってきますよね。

#1.関数の種類

関数には2種類あります。

**誰かが用意してくれた関数** と **自分でつくる関数** です。

##1-0.誰かが用意してくれた関数

今まで頻繁に使ってきた立方体を追加する関数“primitive_cube_add()“などは**誰かが用意してくれた関数**です。

“primitive_cube_add()“とか、長い関数名だなと思った方もいるかもしれませんが、きっとどこかのおじさんたちが頑張って話しあ

元記事を表示

強化学習1 入門編

[Aidemy](https://aidemy.net/) 2020/11/15
#はじめに
 こんにちは、んがょぺです!バリバリの文系ですが、AIの可能性に興味を持ったのがきっかけで、AI特化型スクール「Aidemy」に通い、勉強しています。ここで得られた知識を皆さんと共有したいと思い、Qiitaでまとめています。以前のまとめ記事も多くの方に読んでいただけてとても嬉しいです。ありがとうございます!
 今回は、強化学習の一つ目の投稿になります。どうぞよろしくお願いします。

*本記事は「Aidemy」での学習内容を「自分の言葉で」まとめたものになります。表現の間違いや勘違いを含む可能性があります。ご了承ください。

今回学ぶこと
・強化学習とは
・エージェント、環境、報酬
・強化学習の方策

#強化学習とは
・機械学習は大別すると__「教師あり学習」「教師なし学習」「強化学習」__に分けられる。
・そのうち、今回学んでいく__強化学習__は、__「与えられた条件下で最適な行動を発見すること」__を目的とした手法である。例えばゲームであれば、強化学習によって勝ち方を発見することができる。

元記事を表示

【Alibaba Cloud】OSS / Function Compute でもSSIっぽいことをやる

# TL;DR
[前回](https://qiita.com/imaichiyyy/items/e216f691c02756d628a2)、AWSでSSI(include virtual)が記述されたHTMLを、S3の特定バケットに格納しLambdaでインクルード内のソースを結合した上で別のバケットに格納するような仕組みを作りましたが、それのAlibaba Cloud版です。

# やりたかったこと
OSS(Object Storage Service)は静的サイトホスティングサービスのため、サーバーサイド側で動的に処理をするということが原則できません。
もちろんその後キャッシュする先であるCDN側(Alibaba Cloud CDN)もできません。

その場合、今であればローカル開発環境を構築しローカル上では別々のファイルにしておき、コンパイルする際に結合する方法がスタンダードだと思いますが、元々SSIが使われていた既存サイトをOSS+CDNへ移管する場合などを含め残念ながらすべての案件でそのフローが導入できるわけでもありません。

なので、元々SSIが使われていた場合、その

元記事を表示

OTHERカテゴリの最新記事