2022年1月28日金曜日

社内のデータの分析

社内のデータは集計して欠損値の補完や整理は初めてです。

金額の合計は特に問題ないですが、客先や担当者名で躓いてしまいました。

まずpythonのpandasでdf2 = df.replace({'A課長': 'A','B次長': 'B','K所長': 'K','M部長': 'M'})で名前で集計出来る様にして、会社名が半角と全角がバラバラなのでhttps://forest.watch.impress.co.jp/docs/serial/exceltips/1296013.html

でエクセルでASCで統一してからエクセルをパイソンで集計 

客先別で同じ様な問題があるかもしれませんが…



2022年1月21日金曜日

VRの続き(キューピクル)

 こんなデータを提供する会社ありそうでない。

iPhoneで3Dデータを取得して現場改造のデータを収集したら当然その後の改造や追加する機器をそこに配置する事になるのでとりあえず200k、300k、500kのキュービクルの3Dデータを作りました。


あくまで参考様で製造用のデータではありません。

内部にトランス、LBSやブレーカーを配置してドアは稼働する様に設計しました。


目の都合で少しずつの作業で細かなことはできません。
結局はPC作業もかなりの制限で操作マニュアル調べるのにままならない状況です。
一応autodeskビューアーにアップしています。
https://autode.sk/3F50EEZ



2022年1月7日金曜日

AIの中長期的なプラン

視力の問題でできる事に限りがあるなかで生きていく方法を模索しています。

AIデータサイエンスといった事を始めた矢先で混乱していますが、先ずはデータです。

手元にあるデータ若しくは今後必要に応じて取得するデータがあります。

それらを活用するにはデータを前処理(異常値や欠損データを補完する)事が必要になります。それらを自動で補完する事が必要になります。

Python等のプログラムもありますが、そこまで自分でするのは現状では無理です。

pycaretというものがありました。下手な素人よりは賢いですが、ハイパーパラメータの調整で多少は変わるようです。

Matlabにその様な機能がありまた各産業の実際のデータを使った事例もあるのでそれらも自社に近いデータを見つける事が出来れば効率的になります。

問題はソフトが複雑で数学や物理法則を理解しないと扱えないので習得に時間が掛かる。1日の時間もある程度制限しないといけません。

今後のこともあるので手順や失敗を記述しながら進めて行く事が必要です。

先ずは適当なサンプルを見つける、実践する(出来なければ途中経過を記述する)。

それらを積み重ねて行く事を始めてみようと思います。


 先ずはデータの前処理を勉強中です。社内のデータが欠損やカテゴリーデータの内容を正規化しないと使えないので調整しています。

少しはコードを工夫しないといけないのですが、ネットに色々と調べながら進めています。
YouTubeにも色々と勉強になる動画があるのでノートに書きながら目に負担にならない用に工夫しています。:;、()[]等が判別出来ないので疲れます。

2022年1月4日火曜日

AIを使った何か?例えば主成分分析

 機械学習は魔法ではなくデータを分類する手法です。

例えば身長が高ければ体重は重くなります。ある程度の人数のデータを機械学習して身長175cmの体重を予測する事は出来ます。精度を上げる為に性別や骨格の情報を追加していけばより良い予測ができる事は理解出来ると思います。その計算に右足と左足の長さをデータとして追加しても役に立たない事も理解出来そうです。それでは年齢を追加したらどうでしょう?

結局は追加して予測精度を調べるしかありません。

あるお店の外気温による飲み物の売上の予測はどうでしょうか?

気温が上がれば増えるでしょう。でも気温が30度を超えて40度になっても数量は増えないでしょう。それだけ気温が高いとそもそも外出しないでしょうし。逆に10度になってら減るでしょうか?

マイナス5度になれば売上はマイナスになるでしょうか?

機械学習はコンピューターを使うので計算式を入力する必要があります。

何が言いたいかと言うと社内の業務改善にAIを導入といった考え方ではなく、社内のデータを使って何をする為にどのデータが必要なのかを決めないとどうしようもありません。

最初に手法があると説明しましたが。身長から体重の予測や気温から飲み物の予測は線形回帰やロジスティック回帰、それ以外にも決定木、サポートベクターマシン、XGブースト…

数十種類の手法がありデータや予測したいものによって使い分けます。どれが最適か色々な手法を試す必要があります。

先ほどの左右の足の長さのように不要なデータで機械学習すると当然予測はおかしくなります。

私は知識をしてそれらを知っていますが、プログラムを実装した事はありません。それを始める前に手術してそれらを始める事ができていません。

仮に予測したいことがあれば調べて実装をしようと思いますが、いつまでに出来るかわかりません。

年末年始を利用して少しサンプルの実装していますが、データの前処理も大変です。

今は主成分分析をしています。

体重や身長、足の長さ、気温、性別等のデータの中から予測したい目的にどれほど影響しているかを数学的に分析する機械学習です。

との様に計算するかと言うとそれぞれの数値の平均と取得したデータの差を2乗してそれぞれのデータに相関関係がないかを分散共分散行列を求めて2、3種類までデータを絞る方法です。

それぞれのデータは目的に対して意味あるものであれが多くあれば予測精度が上がりますが研鑽コストも上がってしまします。その項目(説明変数)が使えるか使えないかを数学的に解く手法の一つです。




パイソンのコードです。

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt



# In[2]:



df = pd.read_csv('titanic_train.csv')

df.head()



# In[3]:



df.info()   



# In[4]:



df['Age'] = df['Age'].fillna(df['Age'].mean())

df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0])


df.info()



# In[5]:



X = df.drop(columns=['PassengerId', 'Survived', 'Name', 'Ticket', 'Cabin'])

y = df['Survived']


X.head()



# In[6]:



from sklearn.preprocessing import LabelEncoder


cat_features = ['Sex', 'Embarked']


for col in cat_features:

    lbl = LabelEncoder()

    X[col] = lbl.fit_transform(list(df[col].values))

    

X.head()



# In[7]:



from sklearn.preprocessing import StandardScaler


num_features = ['Age', 'Fare']


for col in num_features:

    scaler = StandardScaler()

    X[col] = scaler.fit_transform(np.array(df[col].values).reshape(-1, 1))

    

X.head()



# In[8]:



from sklearn.decomposition import PCA


pca = PCA()


X_pca = pca.fit_transform(X)

X_pca



# In[9]:



def plot_2d(X, y):

    plt.plot(X[:, 0][y==0], X[:, 1][y==0], "bo", ms=15)

    plt.plot(X[:, 0][y==1], X[:, 1][y==1], "r^", ms=15) 

    plt.xlabel("First Principal Component")

    plt.ylabel("Second Principal Component")

    plt.legend(['Not Survived', 'Survived'], loc="best")


plt.figure(figsize=(6, 6))

plot_2d(X_pca, y)

plt.show()



# In[10]:



import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

from matplotlib.widgets import Slider

import numpy as np

get_ipython().run_line_magic('matplotlib', 'widget')

def plot_3d(X, y):

    fig = plt.figure(figsize=(6, 6))

    ax = fig.add_subplot(111, projection='3d')

    

    ax.plot(X[:, 0][y==0], X[:, 1][y==0], X[:, 2][y==0], "bo", ms=15)

    ax.plot(X[:, 0][y==1], X[:, 1][y==1], X[:, 2][y==1], "r^", ms=15)

    

    ax.set_xlabel("First Principal Component", fontsize=15)

    ax.set_ylabel("Second Principal Component", fontsize=15)

    ax.set_zlabel("Third Principal Component", fontsize=15)

    ax.legend(['Not Survived', 'Survived'], loc="best", fontsize=16)

    

plot_3d(X_pca, y)

plt.show()

2022年1月3日月曜日

新年明けましておめでとう御座います。

 まだまだ低空飛行です。歪んで見えるのも視野が欠けるのもまだ慣れません。

この状態で今から何をするのか試行錯誤中です。

先ずは気持ちのコントロールです。障害が無ければ気が向かない事でも気持ちを押して進めます。昨年は積極的に気が向かない事に挑戦しました。

この障害で何かを始めると必ず視力が問題になります。ネットや本で情報を得るにも見辛い事が影響します。そのせいで気持ちも落ち込みます。()と[]の違いが分からないのでプログラムの入力ミスも中々見つからず時間だけが過ぎて行きます。

社内の問題をAIで解決と言っても、何を予測するのかその為のデータがあるのか?

そもそもその予測が役に立つのか?を説明するのも実は大変です。

例えば来季の売上予測を出すとします。今までの売上データの推移からAIの手法を使って予測するとします。精度の高い予測であっても意味はないです。

何故かというと、その数字から何をすべきかが分からないからです。

今年は部品不足で今までの様に製品を売る事での売上増加は難しいと思います。これは競合他社も同じです。電源ICも少しですが供給が始まりまいたが、コロナのマスクの時と同じ混乱があると思います。その後ある程度で安定するのに時間が掛かると予想できます。

その間はある程度割り切って社内のシステムの変更に時間を掛ける方が良いのかもしれません。

AIを使っていませんが現在の部品不足で今年の生産量を予測が出来てそのために何をするかを議論して実行するのが予測の意味です。

今データ整理用のプログラムと機械学習の手法を勉強していますが苦戦中です。どれもそれほど簡単ではありません。データを取り出して集計して平均を出すだけではありません。

社内のデータを整理していますが、欠損値や半角と全角が混じっているので同じ会社や担当者の重複、同じ担当者の役職の変更で集計するのにも前処理をしないと使えません。

前処理のプログラムを作るのに試行錯誤しています。

その後のデータ処理にやっと機械学習をつかうのですが、数十種類の手法のどれを適用するのかを調べるにも文献を読む必要があります。その後そのコードを社内のデータ様に変更する必用があります。

その際、それぞれのデータの平均を取ってその差を2乗して足して別の要素の平均の2乗を足して掛けて割ってその微分から変化率を調べてそのデータの全体の影響を数値化してのの中から一番影響のある要素を集めて予測する。主成分分析のプログラムを触っています。

それがどの程度役に立つのかもわかりません。業務改善の一つの指標になると思いますが。

当初の目標はそれらの手法の習得に今年一年は掛かると考えていました。

次の報告ではその内容を書きます。