k01ken’s b10g

He110 W0r1d!

R言語でクラスター分析を行う


参考リンク
Rとクラスター(1)
Rを使った分析(クラスター分析) | 外国語教育研究ハンドブック
Rで距離行列の生成とクラスター分析(Matrixパッケージ対応) - Qiita
R言語プログラミング: クラスター分析 - 階層的クラスタリング - hamadakoichi blog
R言語プログラミング: クラスター分析 - k-means - hamadakoichi blog
【Rによるデータサイエンス】クラスター分析 - 日常メモ
http://www1.tcue.ac.jp/home1/ymiyatagbt/cluster01.pdf
第61回 クラスター分析 - Rを通じて統計学を学ぶ備忘録ブログ
何を読み取るのかが重要--統計言語「R」でクラスター分析 - ZDNet Japan

Ruby on Railsで部分テンプレートを使う

開発環境はWindows 7 Professional(32bit)+Ruby 2.3.3p222+Rails 4.2.1。

ヘッダーやフッターやサイドバーやメニューなど、複数のページで共有部分を使いまわしたい場合は、部分テンプレートを用いる。

・ファイルの先頭名にはアンダーバーをつけること。単語と単語の間にアンダーバーは別に入れなくてもエラーにはならないが、見栄えの問題で入れておくと良い。
・同じコントロール内でのみ使用するなら、app/views/コントロールディレクトリに置き、複数のコントロールで使用するなら、app/views/ディレクトリに任意のディレクトリ名をつけて、そこに置く。慣例的には、sharedをつけるらしい。
・部分テンプレートを読み込む側では、<%= render 'ディレクトリ名/部分テンプレート名' %>で読み込む。
例えば、sharedフォルダ内に、_login_form.html.erbという部分テンプレートがあれば、

<%= render 'shared/login_form' %>

という風に、先頭のアンダーバー部分と、.html.erbという拡張子部分を除いて記述するので注意。

参考リンク
部分テンプレート - Ruby on Rails入門

Ruby on Railsでデータベースと接続し、テーブルを作成する

開発環境はWindows 7 Professional(32bit)+Ruby 2.3.3p222+Rails 4.2.1。

Railsで簡単なアプリケーションを作る - k01ken’s b10g
前回の続きになります。

・データベースへの接続の設定
接続の設定はconfig/database.ymlで行います。

Railsにはアプリケーションのモード(環境)が3つある。
開発 development コードを書きながらブラウザーで確認するための環境。
テスト test 自動テストのための環境
本番 production ウェブサイトを一般に公開するときの環境

・データベースの作成
ruby bin/rake db:create
SQLiteは1つのデータベースを1つのファイルとして扱う。db:createによって、
development.sqlite3とtest.sqlite3ができる。本番用のデータベースを作成するときは、
ruby bin/rake db:create RAILS_ENV=production
と入力する。逆に削除したいときは、
ruby bin/rake db:drop
と入力する。

config/application.rb
config.time_zoneのコメントアウトを外して、'~'の中をTokyoに変更

・モデルの作成
ruby bin/rails g model モデル名
ruby bin/rails g model member
モデル名がmemberだと、データベース名は複数形のmembersのような複数形になる。
モデルのクラス名はMemberのような頭文字が大文字になります。
モデル名は単数形が決まり。member_imageと指定すると、MemberImageというモデル名で、
member_imagesという名前のテーブルができます。
app/models/member.rb

マイグレーション
db/migrate/年月日時分秒_create_テーブル名.rbのファイルが作成されています。
このファイルはマイグレーションスクリプトといいます。
changeメソッド内のcreate_tableは、テーブル作成を行うものです。
カラムは、t.カラムの型 :カラム名という形で記述。例えば、nameという文字列型の
カラムを作成するなら、

create_table :members do |t|
	t.string :name # ここを追加
	t.timestamps null: false
end

とします。ためしにテーブルを作ってみましょう。

class CreateMembers < ActiveRecord::Migration
  def change
    create_table :members do |t|
	t.integer :number, null: false
	t.string :name, null: false
	t.string :full_name
	t.string :email
	t.date :birthday
	t.integer :gender, null: false, default: 0
	t.boolean :administrator, null: false, default: false
      	t.timestamps
    end
  end
end

以上を作成します。次に、Rakeのdb:migrateタスクを実行します。
ruby bin/rake db:migrate
コマンドを入力して、データベースにテーブルmembersが作成されます。
本番用の場合は、オプションとして、RAILS_ENV=productionをつけます。
typeというカラム名は使えない。どうしても使いたい場合は、モデルクラス内で、

class Member < ActiveRecord::Base
	self.inheritance_column = nil

と記述すること。

自分も2040年くらいのVRを考えてみる

2040年くらいのVRをかんがえる – GOROman – Medium

という記事を読んで、前々から、こうなるだろうと、想像していたことと一致する部分と一致しない部分があったので、書いていこうと思います。

 

一致する部分

・VRの解像度とかもう肉眼と同じ。区別が困難に

・現実が不便になる

・多分この頃になるとVRとかARとか誰も言わなくなる。今「インターネットやってます!」とか言わないのと同じ。当たり前というか空気となる

 

VRの未来の話になると、VR上に、仮想的な国家が生まれるみたいな話になるんですが、僕は、それは通過点で、その先には、おそらく、1人に対して、1つ以上の世界が構築されて、それぞれが、理想的な人生を仮想世界上で歩んでいくと思います。

結局、仮想的な国家となったとしても、上下関係(国家の創造者とそこに暮らす人)や勝ち負けの競争(仮想的な国家同士の人の奪い合い)が生まれて、現実とそこまで変わらないと思うし、自分としては、嫌だなと思います。

 

その世界は、自分以外がすべてAIで作られた現実と区別がつかない仮想世界で、自分好みの人間をAIが学習して、自動生成し、それらと交流することで現実の孤独感が薄れ、理想的な自分好みの恋人もAIが作ってくれて、何人と浮気しても怒られない。(怒られるパターンを作っても良い。)現実に浮気する人が激減して、週刊誌のネタとして役立たなくなる。

その仮想現実で実現したいことを、自分好みの難易度で実現できる。

それによって、現実を生きることの生きづらさみたいな言葉がなくなる。

ただ、 少子化が今以上に進む。

 

大部分の人はベーシックインカムで働かず暮らし(労働は趣味。労働という概念がほぼ消える)、ほとんどの人が、最低限の衣食住以外(逮捕された齋藤正章氏によると、それらもタダ同然になると予測している)、お金もほとんど使わない。お金を使うことの大部分は仮想上で実現できるので、お金(仮想通貨も含む)を持っている人と持っていない人の格差がひどくても、あまり格差を感じない。

ゲーム内の通貨をたくさん持っているような感覚。旅行だったら、すべて仮想現実上で楽しめ、良いところに住みたければ、現実は六畳一間のアパートでも、VR上では高級マンションみたいなところに住める。

 

要は、仮想だろうが、現実だろうが、自分の脳が満足すればいい。

自分としてもそういう世界になるように少しでも力になりたい。

未来に生まれる人が非常にうらやましい。AIが人間に反逆して、奴隷化されない限り。

 

 

Railsで簡単なアプリケーションを作る

開発環境はWindows 7 Professional(32bit)+Ruby 2.3.3p222+Rails 4.2.1。

WindowsでRuby on Railsを導入するまでの手順 - k01ken’s b10g
前回の続きです。

簡単なアプリケーションといってもトップページを修正するぐらいです。

1.まず、開発用のフォルダをCドライブ直下に作る。railsとする。

2.コマンドプロンプトを実行し、カレントディレクトリを、C:\railsにします。Railsでアプリケーションを作成するためには、モデルやコントローラの作成、サーバーの起動などにrailsコマンドを使います。
アプリケーションを作成するためにはコマンドプロンプト上でrails new 作成するアプリケーション名と入力して作成します。
とりあえず、以下のコマンドを入力して作成。
rails new app --skip-bundle
railsフォルダ内に、appフォルダが作成され、中に、いくつかのファイルができたと思います。

3.コマンドプロンプトでカレントディレクトリをappフォルダに指定して、bundle installと入力してください。bundleとは、Gemパッケージの管理とインストールを行うためのツールです。
Railsアプリケーションでは、たくさんのGemパッケージを必要としますが、複数の開発者が共同で開発を進めるときに、開発者同士で同じバージョンのGemパッケージを用意しなければならないと不都合なので(開発用パソコンと本番サーバーの間でも同様)、Bundlerは、必要なGemパッケージをリストアップし、複数のコンピュータ間で簡単に同期が取れるようにするものです。(作ったアプリとGemfile.lockを渡し、受け取った側は受け取ったアプリ内でbundle installを行う)

rails new 作成するアプリケーション名と入力すれば、自動的に、bundle installが実行されます。説明するために、さっきはスキップするオプションを追加しました。

4.作成したアプリケーションを起動してみたいと思います。
コマンドプロンプトで、
ruby bin/rails s
と入力して、サーバーを起動して、Webブラウザでhttp://127.0.0.1:3000/または、http://localhost:3000/のURLにアクセスしてください。
f:id:k01ken:20171231030205p:plain
上記のようなページが表示されたら成功です。

[注意]これから、.erbや.rbなどのファイルを保存する際の文字コードUTF-8UTF-8Nで保存してください。(自分の場合は、TeraPadを使っていて、保存すると自動的にUTF-8Nで保存されるようにしています)

5.コントローラを作成
コントローラの作成にはruby bin/rails gコマンドで作成します。ruby bin/rails g controller コントローラ名 アクション名(アクション名の部分は省略して後から定義しても構いません)で、コントローラとアクションを作成できます。ここでは、TopControllerとindexアクションを作成します。
ruby bin/rails g controller top index
と入力したらapp/controllersにtop_controller.rbが作成されたと思います。

6.ルーティングの設定
config/routes.rbを開き、Rails.application.routes.draw doendの間の記述をすべて削除して、

root "top#index"

と書き直します。これによって、トップページにアクセスすると、views/top/index.html.erb内の内容が表示されます。
f:id:k01ken:20171231033125p:plain

7.ビューの作成
次は、indexアクションに対応したビューを編集してみます。
app/views/top/index.html.erbを開き、中身を

<h1>こんにちは</h1>
<p>トップページが表示されました</p>

に書き換えてください。そして、もう1度、トップページにアクセスすると、
f:id:k01ken:20171231033450p:plain
と修正されたと思います。

8.変数を使う
controllers/top_controller.rb内を以下のように修正。

class TopController < ApplicationController
  def index
	@message = "変数です" # ここを追加
  end
end

views/top/index.html.erb内を以下のように修正

<h1>こんにちは</h1>
<p>トップページが表示されました</p>
<p><%= @message %></p>

indexアクション内の変数が、表示されたと思います。
f:id:k01ken:20171231035008p:plain

WindowsでRuby on Railsを導入するまでの手順

開発環境は、Windows 7 Professional(32bit)。

1.Rubyをまずインストールします。WindowsRubyをインストールするには、RubyInstallerが便利です。そこで、公式サイトへアクセスします。
RubyInstaller for Windows

2.表示すると、いきなり現れる赤いDownloadボタンをクリックします。

3.RubyInstallersの欄から、今回は最新バージョンのRuby 2.3.3と書かれたテキストリンクをクリックすると、インストーラのダウンロードが自動的に開始されます。

4.ダウンロードしたrubyinstaller-2.3.3.exeを実行し、
インストール中に利用する言語を選んでくださいで、日本語を選択し、同意するにチェックを入れて、次へボタンをクリック。次に、Rubyの実行ファイルへ環境変数PATHを設定するにチェックを入れて、インストールボタンをクリックし、インストールが終了したら、完了ボタンをクリックします。

5.Rails用のGemパッケージのインストールにはDevKitが必要なので、Devkitをインストールします。場所は先ほど、Ruby2.3.3をダウンロードした場所で下の方にスクロールした、Development Kitにあり、For use with Ruby 2.0 to 2.3 (32bits version only)の方をダウンロードします。(Ruby 2.0-2.3までなので、先ほど、Ruby 2.3.3をダウンロードしました。)

6. コマンドプロンプトを実行して、ruby -vと入力して、バージョン情報が出現したら、Rubyのインストールは成功です。
f:id:k01ken:20171231011130p:plain

7.インストールしたDevKit-mingw64-32-4.7.2-20130224-1151-sfx.exeを実行する前に、ファイルを展開する場所を指定されますが、Cドライブ直下に、devkitフォルダを作り、そこを指定して、展開するようにします。Extract to:C:\devkitを指定して、Extractボタンをクリック。
devkitフォルダ内のdevkitvars.batをクリックして実行します。一見、何も起こっていませんが、setコマンドにより環境変数PATHに必要なパスが自動的に設定されてます。

8.railsを利用するためのフォルダをCドライブ直下に作成します。今回は、testとします。

9.
curl - Extract CA Certs from Mozilla
上記のサイトへアクセスして、cacert.pemのテキストリンクをクリックし、cacert.pem(SSLの証明書)をダウンロードします。これは、Windowsでそのままgemコマンドやbundleコマンドを行うと、SSLのエラーが出現して、モジュールのダウンロードが失敗するのを防ぐために必要になります。これをtestフォルダの中に入れ、コマンドプロンプト上で、
set SSL_CERT_FILE=C:\test\cacert.pem
と入力し、環境変数PATHに設定。

10.コマンドプロンプトを実行し、カレントディレクトリをtestフォルダにして、
gem install rails --version "4.2.1" --no-rdoc --no-ri
と入力すると、インストールが勝手に開始されます。

11.インストールが終わったら、rails -vと入力して、バージョン情報が表示されたら成功です。
f:id:k01ken:20171231020042p:plain


参考リンク
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
・初心者レベルからある程度のレベルまで一気に学習できます。

matplotlibで4次関数を描画する

開発環境は、Windows7 Professional(32bit) + Python 2.7.10.12。

微分積分の教科書を読んでいると、以下のような数式の図があったので、
描画してみようと思いました。
x^4-10x^2+9
教科書では、歯のような形をしていました。
さっそく、コードを書いてみましょう。

# -*- coding:utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

def ss(x):
	return (x ** 4) - (10 * (x ** 2)) + 9

x = np.arange(-4,4,0.01)
y = [ss(n) for n in x]
plt.plot(x,y)
plt.show()

結果の画像はこちら、
f:id:k01ken:20171230190049p:plain

次は、プラスとマイナスを逆にして、X座標に対称的な描画します。
数式は、
-x^4+10x^2-9
となります。ソースコードは以下になります。

# -*- coding:utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

def ss(x):
	return - (x ** 4) + (10 * (x ** 2)) - 9

x = np.arange(-4,4,0.01)
y = [ss(n) for n in x]
plt.plot(x,y)
plt.show()

結果の画像はこちら、
f:id:k01ken:20171230191944p:plain

今回は描画だけでなく、上記を見ると分かるように、はてなブログで初めて数式を書く経験もしました。こうやって、新しいことをどんどん行って、できることが、どんどん増えていくのは楽しいことです。

数学の勉強をしている学生さんはこういう学習の仕方の方が楽しいんじゃないでしょうか?

参考リンク
はてなブログで数式が綺麗に書けるTeXの便利ワザ for 見たままモード - cBlog
TeXで数式をはてなブログに表示する - k's diary