Что произойдет, если Perl попытается назвать перемещение () на файле, который загружается?

Это скользкое поле, потому что очень трудно измерить, насколько «хорошо» работает ваш алгоритм кластеризации без каких-либо наземных меток истинности. Для того, чтобы сделать автоматический выбор, вам нужно иметь метрики, которые будут сравнивать, как KMeans работает для различных значений n_clusters.

Популярным выбором является оценка силуэта. Вы можете найти более подробную информацию об этом здесь . Вот документация scikit-learn:

Коэффициент силуэта рассчитывается с использованием среднего расстояния внутри кластера (a) и среднего расстояния до ближайшего кластера (b) для каждой выборки. Коэффициент силуэта для образца равен (b - a) / max (a, b). Для пояснения, b - это расстояние между образцом и ближайшим кластером, частью которого он не является. Обратите внимание, что коэффициент силуэта определяется только в том случае, если количество меток равно 2 < = n_labels < = n_samples - 1.

blockquote>

В результате вы можете вычислить только оценку силуэта для n_clusters >= 2 (что, к сожалению, может быть ограничением для вас, учитывая описание вашей проблемы).

Вот как вы будете использовать его в фиктивном наборе данных (тогда вы можете адаптировать его к своему коду, просто для того, чтобы получить воспроизводимый пример):

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

iris = load_iris()
X = iris.data

sil_score_max = -1 #this is the minimum possible score

for n_clusters in range(2,10):
  model = KMeans(n_clusters = n_clusters, init='k-means++', max_iter=100, n_init=1)
  labels = model.fit_predict(X)
  sil_score = silhouette_score(X, labels)
  print("The average silhouette score for %i clusters is %0.2f" %(n_clusters,sil_score))
  if sil_score > sil_score_max:
    sil_score_max = sil_score
    best_n_clusters = n_clusters

Это вернет: [1113 ]

The average silhouette score for 2 clusters is 0.68
The average silhouette score for 3 clusters is 0.55
The average silhouette score for 4 clusters is 0.50
The average silhouette score for 5 clusters is 0.49
The average silhouette score for 6 clusters is 0.36
The average silhouette score for 7 clusters is 0.46
The average silhouette score for 8 clusters is 0.34
The average silhouette score for 9 clusters is 0.31

И, таким образом, у вас будет best_n_clusters = 2 (примечание: на самом деле у Ирис есть три класса ...)

12
задан brian d foy 13 February 2010 в 20:03
поделиться

3 ответа

Нет, перемещение должно просто позволить завершить процесс загрузки на новой позиции. Вы просто перемещаете инод из одной позиции в другую. Дескриптор открытого файла из программы загрузки все еще должен указывать на него.

Я просто хочу повторить то, что упомянули некоторые другие. Это работает только до тех пор, пока операция перемещения находится в одной файловой системе. Если это как другая файловая система, то индекс не может быть передан, потому что он всегда принадлежит той же файловой системе Тогда наиболее вероятным сценарием будет то, что частичные данные в этот момент копируются в новое местоположение, в то время как программа все еще загружает в старом inode, который больше не присоединен к файлу, и поэтому не может использоваться.

10
ответ дан 2 December 2019 в 20:19
поделиться

Поскольку стандартного хода не существует , трудно понять, что происходит в вашем сценарии. Если вы имели в виду переименовать , то у вас, вероятно, не возникнет никаких проблем, поскольку основной путь вашей ситуации будет неправильным, если вы перемещаете файл из одной файловой системы в другую (и, следовательно, выполняете копирование and-delete, а не реальный ход), и в большинстве систем переименовать не удастся при таких обстоятельствах. (Так что, если ваша настройка работает вообще, все будет в порядке.)

Если вы не используете , переименуйте , но некоторые переместят функцию , которая, например, будет обрабатывать перемещение между файловыми системами, тогда вы вполне можете получить частичный файл, если задействованы несколько файловых систем. (Это может оказаться очень неприятной ошибкой, если, например, вы все сейчас находитесь на одной файловой системе,

5
ответ дан 2 December 2019 в 20:19
поделиться

Я не уверен, но, скорее всего, ничего плохого не произойдет. Перемещение не изменяет номер inode файла, так что сервер FTP вообще не заметит перемещение и продолжит запись в файл в новом месте. Короче говоря, move () будет успешным, и загрузка продолжится в новом месте.

1
ответ дан 2 December 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: