あなたの問題はここにはありません。エポックからの秒数をカウントするタイムスタンプであるため、値が対象範囲であるモジュロ演算子を適用するだけで済みます。その上で分類子をトレーニングすると、今後のすべての場所を予測できるはずです。学習は時々しか行われないため、主な問題はパフォーマンスではなく、学習したデータセットを更新する方法です。すでに述べたように、これに機械学習を使用する必要はありませんが、機械学習を使用して実行したい場合は、基本的に 1d データセットで k 最近傍を使用して実行できます。
[編集]:
言語を混同しましたが、修正しました: 分類子は、統計的分類を行うアルゴリズムです。
機械学習と統計では、分類とは、カテゴリ メンバーシップが既知である観測 (またはインスタンス) を含むデータのトレーニング セットに基づいて、新しい観測が属する一連のカテゴリ (サブ母集団) を特定する問題です。[ 1 ]
私はそのようなことを行うために sklearn を使用しただけなので、以下は k 最近傍分類器 [ 2 ] を使用する方法の最小限の例です。分類できるようにするには、文字列を数値に変更し、指定されたテスト データセットで分類子をトレーニングする必要があります。その後、新しい指定されたタイムスタンプの場所を予測できます。
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
data = [[1365650747255, 'san francisco'],
[1365650743354, 'san francisco'],
[1365650741349, 'san mateo'],
[1365650756324, 'mountain view'],
...
[1365650813354, 'menlo park']]
# Map location strings to integers and replace
location_mapping = {}
location_index = 0
for index, (time, location) in enumerate(data):
if(not location_mapping.has_key(location)):
location_mapping[location] = location_index
location_index += 1
data[index][1] = location_mapping[location]
inverse_location_mapping = {value:key for key, value in location_mapping.items()}
data = np.array(data)
week = 60 * 60 * 24 * 7
# Setup classifier
classifier = KNeighborsClassifier(n_neighbors=10)
# Train classifier on given data
classifier.fit(data[:, 0] % week, data[:, 1])
# Predict desired location
prediction = classifier.predict([[1365444444444 % week]]))
print(inverse_location_mapping[prediction])
[ 1 ] : http://en.wikipedia.org/wiki/Statistical_classification
[ 2 ] : http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html