Öğretici: Azure Notebook'ta Kişiselleştirme kullanma
Önemli
20 Eylül 2023 tarihinden itibaren yeni Kişiselleştirme kaynakları oluşturamayacaksınız. Kişiselleştirme hizmeti 1 Ekim 2026'da kullanımdan kaldırılıyor.
Bu öğretici, Bir Azure Not Defteri'nde Bir Kişiselleştirme döngüsünün uçtan uca yaşam döngüsünü gösteren bir Kişiselleştirme döngüsü çalıştırır.
Döngü, bir müşterinin hangi tür kahve sipariş etmesi gerektiğini önerir. Kullanıcılar ve tercihleri bir kullanıcı veri kümesinde depolanır. Kahve hakkındaki bilgiler bir kahve veri kümesinde depolanır.
Kullanıcılar ve kahve
Bir web sitesiyle kullanıcı etkileşimini simüle eden not defteri, veri kümesinden rastgele bir kullanıcı, günün saati ve hava durumu türünü seçer. Kullanıcı bilgilerinin özeti:
Müşteriler - bağlam özellikleri | Günün Saatleri | Hava durumu türleri |
---|---|---|
Alice Bob Cathy Dave |
Sabah Öğleden sonra Akşam |
Güneşli Yağmurlu Karlı |
Kişiselleştirme'nin öğrenmesine yardımcı olmak için, sistem zaman içinde her bir kişi için kahve seçimi hakkındaki ayrıntıları da bilir.
Kahve - eylem özellikleri | Sıcaklık türleri | Kaynak yerler | Kavurma türleri | Organik |
---|---|---|---|---|
Cappacino | Hareketli | Kenya | Koyu | Organik |
Soğuk bira | Durgun | Brezilya | Açık | Organik |
Buzlu mocha | Durgun | Etiyopya | Açık | Organik değil |
Latte | Hareketli | Brezilya | Koyu | Organik değil |
Kişiselleştirme döngüsünün amacı, kullanıcılarla kahve arasında mümkün olduğunca çok en iyi eşleşmeyi bulmaktır.
Bu öğreticinin kodu Kişiselleştirme Örnekleri GitHub deposunda bulunur.
Simülasyon nasıl çalışır?
Çalışan sistemin başında Kişiselleştirme'den gelen öneriler yalnızca %20 ile %30 arasında başarılı olur. Bu başarı, Kişiselleştirici Ödül API'sine 1 puanla geri gönderilen ödülle gösterilir. Bazı Rank ve Reward çağrılarından sonra sistem iyileştirir.
İlk isteklerden sonra çevrimdışı bir değerlendirme çalıştırın. Bu, Kişiselleştirme'nin verileri gözden geçirmesine ve daha iyi bir öğrenme ilkesi önermesine olanak tanır. Yeni öğrenme ilkesini uygulayın ve not defterini önceki istek sayısının %20'siyle yeniden çalıştırın. Döngü, yeni öğrenme ilkesiyle daha iyi performans gösterir.
Çağrıları derecelendirme ve ödüllendirme
Kişiselleştirme hizmetine yapılan birkaç bin çağrının her biri için Azure Notebook, Sıralama isteğini REST API'ye gönderir:
- Sıralama/İstek olayı için benzersiz bir kimlik
- Bağlam özellikleri - Kullanıcının, hava durumunun ve günün saatinin rastgele seçimi - bir web sitesinde veya mobil cihazda kullanıcı benzetimi
- Özelliklere Sahip Eylemler - Kişiselleştiricinin öneride bulunduğu tüm kahve verileri
Sistem isteği alır, ardından bu tahmini günün ve hava durumunun aynı saati için kullanıcının bilinen seçimiyle karşılaştırır. Bilinen seçim tahmin edilen seçimle aynıysa, 1 ödülü Kişiselleştirme'ye geri gönderilir. Aksi takdirde geri gönderilen ödül 0'dır.
Not
Bu bir simülasyon olduğundan ödülün algoritması basittir. Gerçek dünya senaryosunda algoritma, ödül puanını belirlemek için büyük olasılıkla müşteri deneyiminin çeşitli yönlerine yönelik ağırlıklarla iş mantığını kullanmalıdır.
Önkoşullar
- Bir Azure Notebook hesabı.
- Azure AI Kişiselleştirme kaynağı.
- Kişiselleştirme kaynağını zaten kullandıysanız, azure portalında kaynağın verilerini temizlediğinizden emin olun.
- Bu örneğin tüm dosyalarını bir Azure Notebook projesine yükleyin.
Dosya açıklamaları:
- Personalizer.ipynb , bu öğreticinin Jupyter not defteridir.
- Kullanıcı veri kümesi bir JSON nesnesinde depolanır.
- Kahve veri kümesi bir JSON nesnesinde depolanır.
- Örnek İstek JSON'ı , Sıralama API'sine yönelik post isteği için beklenen biçimdir.
Kişiselleştirme kaynağını yapılandırma
Azure portalında Kişiselleştirme kaynağınızı güncelleştirme modeli sıklığı 15 saniye ve ödül bekleme süresi 10 dakika olacak şekilde yapılandırın. Bu değerler Yapılandırma sayfasında bulunur.
Ayar | Value |
---|---|
güncelleştirme modeli sıklığı | 15 saniye |
ödül bekleme süresi | 10 dakika |
Bu öğreticideki değişiklikleri göstermek için bu değerlerin süresi çok kısadır. Bu değerler, Kişiselleştirme döngünüzle hedefinize ulaştıkları doğrulanmadan üretim senaryosunda kullanılmamalıdır.
Azure Notebook'u ayarlama
- Çekirdeği olarak
Python 3.6
değiştirin. Personalizer.ipynb
dosyasını açın.
Not Defteri hücrelerini çalıştırma
Her yürütülebilir hücreyi çalıştırın ve döndürülmesini bekleyin. Bunun, hücrenin yanındaki köşeli ayraçlar yerine *
bir sayı görüntülediğinde yapıldığını biliyorsunuz. Aşağıdaki bölümlerde her hücrenin program aracılığıyla ne yaptığı ve çıkış için neler bekleyebileceğiniz açıklanmaktadır.
Python modüllerini ekleme
Gerekli Python modüllerini ekleyin. Hücrenin çıkışı yok.
import json
import matplotlib.pyplot as plt
import random
import requests
import time
import uuid
Kişiselleştirme kaynak anahtarını ve adını ayarlama
Azure portalında, Kişiselleştirme kaynağınızın Hızlı Başlangıç sayfasında anahtarınızı ve uç noktanızı bulun. değerini <your-resource-name>
Kişiselleştirme kaynağınızın adıyla değiştirin. değerini <your-resource-key>
Kişiselleştirici anahtarınızla değiştirin.
# Replace 'personalization_base_url' and 'resource_key' with your valid endpoint values.
personalization_base_url = "https://<your-resource-name>.cognitiveservices.azure.com/"
resource_key = "<your-resource-key>"
Geçerli tarih ve saati yazdır
Yinelemeli işlev yinelemelerinin başlangıç ve bitiş saatlerini not etmek için bu işlevi kullanın.
Bu hücrelerin çıkışı yok. İşlev, çağrıldığında geçerli tarih ve saati çıkışı yapar.
# Print out current datetime
def currentDateTime():
currentDT = datetime.datetime.now()
print (str(currentDT))
Son model güncelleştirme zamanını alma
işlevi get_last_updated
çağrıldığında işlev, modelin güncelleştirilmiş olduğu son değiştirme tarihini ve saatini yazdırır.
Bu hücrelerin çıkışı yok. İşlev çağrıldığında son model eğitim tarihini döndürür.
İşlev, model özelliklerini almak için GET REST API kullanır.
# ititialize variable for model's last modified date
modelLastModified = ""
def get_last_updated(currentModifiedDate):
print('-----checking model')
# get model properties
response = requests.get(personalization_model_properties_url, headers = headers, params = None)
print(response)
print(response.json())
# get lastModifiedTime
lastModifiedTime = json.dumps(response.json()["lastModifiedTime"])
if (currentModifiedDate != lastModifiedTime):
currentModifiedDate = lastModifiedTime
print(f'-----model updated: {lastModifiedTime}')
İlke ve hizmet yapılandırmasını alma
Bu iki REST çağrısıyla hizmetin durumunu doğrulayın.
Bu hücrelerin çıkışı yok. işlevi çağrıldığında hizmet değerlerinin çıkışını verir.
def get_service_settings():
print('-----checking service settings')
# get learning policy
response = requests.get(personalization_model_policy_url, headers = headers, params = None)
print(response)
print(response.json())
# get service settings
response = requests.get(personalization_service_configuration_url, headers = headers, params = None)
print(response)
print(response.json())
URL oluşturma ve JSON veri dosyalarını okuma
Bu hücre
- REST çağrılarında kullanılan URL'leri oluşturur
- Kişiselleştirici kaynak anahtarınızı kullanarak güvenlik üst bilgisini ayarlar
- Derece olay kimliği için rastgele tohumu ayarlar
- JSON veri dosyalarında okur
- calls
get_last_updated
yöntemi - öğrenme ilkesi örnek çıktıda kaldırıldı - calls
get_service_settings
yöntemi
Hücre, ve get_service_settings
işlevleri çağrısından get_last_updated
çıktı alır.
# build URLs
personalization_rank_url = personalization_base_url + "personalizer/v1.0/rank"
personalization_reward_url = personalization_base_url + "personalizer/v1.0/events/" #add "{eventId}/reward"
personalization_model_properties_url = personalization_base_url + "personalizer/v1.0/model/properties"
personalization_model_policy_url = personalization_base_url + "personalizer/v1.0/configurations/policy"
personalization_service_configuration_url = personalization_base_url + "personalizer/v1.0/configurations/service"
headers = {'Ocp-Apim-Subscription-Key' : resource_key, 'Content-Type': 'application/json'}
# context
users = "users.json"
# action features
coffee = "coffee.json"
# empty JSON for Rank request
requestpath = "example-rankrequest.json"
# initialize random
random.seed(time.time())
userpref = None
rankactionsjsonobj = None
actionfeaturesobj = None
with open(users) as handle:
userpref = json.loads(handle.read())
with open(coffee) as handle:
actionfeaturesobj = json.loads(handle.read())
with open(requestpath) as handle:
rankactionsjsonobj = json.loads(handle.read())
get_last_updated(modelLastModified)
get_service_settings()
print(f'User count {len(userpref)}')
print(f'Coffee count {len(actionfeaturesobj)}')
Çıktının rewardWaitTime
10 dakika ve modelExportFrequency
15 saniye olarak ayarlandığını doğrulayın.
-----checking model
<Response [200]>
{'creationTime': '0001-01-01T00:00:00+00:00', 'lastModifiedTime': '0001-01-01T00:00:00+00:00'}
-----model updated: "0001-01-01T00:00:00+00:00"
-----checking service settings
<Response [200]>
{...learning policy...}
<Response [200]>
{'rewardWaitTime': '00:10:00', 'defaultReward': 0.0, 'rewardAggregation': 'earliest', 'explorationPercentage': 0.2, 'modelExportFrequency': '00:00:15', 'logRetentionDays': -1}
User count 4
Coffee count 4
İlk REST çağrısıyla ilgili sorunları giderme
Bu önceki hücre, Kişiselleştirici'ye çağrıda bulunan ilk hücredir. Çıktıdaki REST durum kodunun olduğundan <Response [200]>
emin olun. 404 gibi bir hata alırsanız ancak kaynak anahtarınızın ve adınızın doğru olduğundan eminseniz not defterini yeniden yükleyin.
Kahve ve kullanıcı sayısının 4 olduğundan emin olun. Hata alırsanız 3 JSON dosyasının tümünü karşıya yükleyip yüklemediğinizden denetleyin.
Azure portalında ölçüm grafiğini ayarlama
Bu öğreticinin ilerleyen bölümlerinde, 10.000 isteğin uzun süre çalışan işlemi tarayıcıdan bir güncelleştirme metin kutusuyla görünür. Uzun süre çalışan işlem sona erdiğinde grafikte veya toplam toplam olarak görmek daha kolay olabilir. Bu bilgileri görüntülemek için kaynakla birlikte sağlanan ölçümleri kullanın. Hizmete ilişkin bir isteği tamamladığınıza göre grafiği oluşturabilir, ardından uzun süre çalışan işlem devam ederken grafiği düzenli aralıklarla yenileyebilirsiniz.
Azure portalında Kişiselleştirme kaynağınızı seçin.
Kaynak gezintisinde İzleme'nin altındaki Ölçümler'i seçin.
Grafikte Ölçüm ekle'yi seçin.
Kaynak ve ölçüm ad alanı zaten ayarlanmıştır. Yalnızca başarılı çağrıların ölçümünü ve toplam toplamasını seçmeniz gerekir.
Zaman filtresini son 4 saat olarak değiştirin.
Grafikte üç başarılı çağrı görmeniz gerekir.
Benzersiz bir olay kimliği oluşturma
Bu işlev, her sıralama çağrısı için benzersiz bir kimlik oluşturur. Kimlik, sıralama ve ödül arama bilgilerini tanımlamak için kullanılır. Bu değer, web görünümü kimliği veya işlem kimliği gibi bir iş işleminden gelebilir.
Hücrenin çıkışı yok. İşlev çağrıldığında benzersiz kimliğin çıkışını verir.
def add_event_id(rankjsonobj):
eventid = uuid.uuid4().hex
rankjsonobj["eventId"] = eventid
return eventid
Rastgele kullanıcı, hava durumu ve günün saatini alma
Bu işlev benzersiz bir kullanıcı, hava durumu ve günün saatini seçer, ardından bu öğeleri Derece isteğine göndermek üzere JSON nesnesine ekler.
Hücrenin çıkışı yok. İşlev çağrıldığında rastgele kullanıcının adını, rastgele hava durumunu ve günün rastgele saatini döndürür.
4 kullanıcının listesi ve tercihleri - kısa süreli olarak yalnızca bazı tercihler gösterilir:
{
"Alice": {
"Sunny": {
"Morning": "Cold brew",
"Afternoon": "Iced mocha",
"Evening": "Cold brew"
}...
},
"Bob": {
"Sunny": {
"Morning": "Cappucino",
"Afternoon": "Iced mocha",
"Evening": "Cold brew"
}...
},
"Cathy": {
"Sunny": {
"Morning": "Latte",
"Afternoon": "Cold brew",
"Evening": "Cappucino"
}...
},
"Dave": {
"Sunny": {
"Morning": "Iced mocha",
"Afternoon": "Iced mocha",
"Evening": "Iced mocha"
}...
}
}
def add_random_user_and_contextfeatures(namesoption, weatheropt, timeofdayopt, rankjsonobj):
name = namesoption[random.randint(0,3)]
weather = weatheropt[random.randint(0,2)]
timeofday = timeofdayopt[random.randint(0,2)]
rankjsonobj['contextFeatures'] = [{'timeofday': timeofday, 'weather': weather, 'name': name}]
return [name, weather, timeofday]
Tüm kahve verilerini ekleme
Bu işlev, Derece isteğine göndermek için kahve listesinin tamamını JSON nesnesine ekler.
Hücrenin çıkışı yok. işlevi çağrıldığında öğesini rankjsonobj
değiştirir.
Tek bir kahvenin özelliklerine örnek olarak şunlar verilmiştir:
{
"id": "Cappucino",
"features": [
{
"type": "hot",
"origin": "kenya",
"organic": "yes",
"roast": "dark"
}
}
def add_action_features(rankjsonobj):
rankjsonobj["actions"] = actionfeaturesobj
Tahmini bilinen kullanıcı tercihiyle karşılaştırma
Bu işlev, her yineleme için Rank API çağrıldıktan sonra çağrılır.
Bu işlev, kullanıcının kahve tercihini hava durumuna ve günün saatlerine göre kişiselleştiricinin söz konusu filtreler için kullanıcıya yönelik önerisiyle karşılaştırır. Öneri eşleşirse 1 puan döndürülür, aksi takdirde puan 0 olur. Hücrenin çıkışı yok. işlevi çağrıldığında puanın çıkışını yapar.
def get_reward_from_simulated_data(name, weather, timeofday, prediction):
if(userpref[name][weather][timeofday] == str(prediction)):
return 1
return 0
Rank ve Reward çağrılarında döngü yapma
Sonraki hücre Not Defteri'nin ana işidir; rastgele bir kullanıcı alır, kahve listesini alır ve her ikisini de Rank API'sine gönderir. Tahmini kullanıcının bilinen tercihleriyle karşılaştırıp ödülü Kişiselleştirme hizmetine geri gönderme.
Döngü zaman için num_requests
çalışır. Kişiselleştirmenin model oluşturmak için Rank ve Reward'a birkaç bin çağrı yapması gerekir.
Rank API'sine gönderilen JSON örneği aşağıda verilmiştir. Kahve listesi, kısa bir süre için tam değil. içinde kahve coffee.json
için JSON'un tamamını görebilirsiniz.
Derece API'sine gönderilen JSON:
{
'contextFeatures':[
{
'timeofday':'Evening',
'weather':'Snowy',
'name':'Alice'
}
],
'actions':[
{
'id':'Cappucino',
'features':[
{
'type':'hot',
'origin':'kenya',
'organic':'yes',
'roast':'dark'
}
]
}
...rest of coffee list
],
'excludedActions':[
],
'eventId':'b5c4ef3e8c434f358382b04be8963f62',
'deferActivation':False
}
Rank API'sinden JSON yanıtı:
{
'ranking': [
{'id': 'Latte', 'probability': 0.85 },
{'id': 'Iced mocha', 'probability': 0.05 },
{'id': 'Cappucino', 'probability': 0.05 },
{'id': 'Cold brew', 'probability': 0.05 }
],
'eventId': '5001bcfe3bb542a1a238e6d18d57f2d2',
'rewardActionId': 'Latte'
}
Son olarak, her döngü kullanıcı, hava durumu, günün saati ve belirlenen ödülün rastgele seçimini gösterir. 1 ödülü, Kişiselleştirici kaynağının verilen kullanıcı, hava durumu ve günün saati için doğru kahve türünü seçtiğini gösterir.
1 Alice Rainy Morning Latte 1
işlevi şunu kullanır:
- Derece: Derece almak için post REST API'sini kullanın.
- Ödül: Ödülü raporlamak için post REST API'si.
def iterations(n, modelCheck, jsonFormat):
i = 1
# default reward value - assumes failed prediction
reward = 0
# Print out dateTime
currentDateTime()
# collect results to aggregate in graph
total = 0
rewards = []
count = []
# default list of user, weather, time of day
namesopt = ['Alice', 'Bob', 'Cathy', 'Dave']
weatheropt = ['Sunny', 'Rainy', 'Snowy']
timeofdayopt = ['Morning', 'Afternoon', 'Evening']
while(i <= n):
# create unique id to associate with an event
eventid = add_event_id(jsonFormat)
# generate a random sample
[name, weather, timeofday] = add_random_user_and_contextfeatures(namesopt, weatheropt, timeofdayopt, jsonFormat)
# add action features to rank
add_action_features(jsonFormat)
# show JSON to send to Rank
print('To: ', jsonFormat)
# choose an action - get prediction from Personalizer
response = requests.post(personalization_rank_url, headers = headers, params = None, json = jsonFormat)
# show Rank prediction
print ('From: ',response.json())
# compare personalization service recommendation with the simulated data to generate a reward value
prediction = json.dumps(response.json()["rewardActionId"]).replace('"','')
reward = get_reward_from_simulated_data(name, weather, timeofday, prediction)
# show result for iteration
print(f' {i} {currentDateTime()} {name} {weather} {timeofday} {prediction} {reward}')
# send the reward to the service
response = requests.post(personalization_reward_url + eventid + "/reward", headers = headers, params= None, json = { "value" : reward })
# for every N rank requests, compute total correct total
total = total + reward
# every N iteration, get last updated model date and time
if(i % modelCheck == 0):
print("**** 10% of loop found")
get_last_updated(modelLastModified)
# aggregate so chart is easier to read
if(i % 10 == 0):
rewards.append( total)
count.append(i)
total = 0
i = i + 1
# Print out dateTime
currentDateTime()
return [count, rewards]
10.000 yineleme için çalıştırma
10.000 yineleme için Kişiselleştirme döngüsünü çalıştırın. Bu uzun süre çalışan bir olaydır. Not defterini çalıştıran tarayıcıyı kapatmayın. Hizmete yapılan toplam çağrıları görmek için Azure portalındaki ölçüm grafiğini düzenli aralıklarla yenileyin. Döngünün her yinelemesi için yaklaşık 20.000 çağrınız, bir sıralama ve ödül çağrınız olduğunda yinelemeler yapılır.
# max iterations
num_requests = 200
# check last mod date N% of time - currently 10%
lastModCheck = int(num_requests * .10)
jsonTemplate = rankactionsjsonobj
# main iterations
[count, rewards] = iterations(num_requests, lastModCheck, jsonTemplate)
İyileştirmeyi görmek için grafik sonuçları
ve rewards
'den count
bir grafik oluşturun.
def createChart(x, y):
plt.plot(x, y)
plt.xlabel("Batch of rank events")
plt.ylabel("Correct recommendations per batch")
plt.show()
10.000 sıralama isteği için grafik çalıştırma
createChart
işlevini çalıştırın.
createChart(count,rewards)
Grafiği okuma
Bu grafik, geçerli varsayılan öğrenme ilkesi için modelin başarısını gösterir.
Testin sonunda döngünün araştırmadan yüzde 100'e yakın bir başarı oranını ortalaması için ideal hedeftir. Araştırmanın varsayılan değeri %20'dir.
100-20=80
Bu keşif değeri, Kişiselleştirme kaynağı için Azure portalında Yapılandırma sayfasında bulunur.
Sıralama API'sine verilerinize bağlı olarak daha iyi bir öğrenme ilkesi bulmak için portalda Kişiselleştirme döngünüz için çevrimdışı bir değerlendirme çalıştırın.
Çevrimdışı değerlendirme çalıştırma
Azure portalında Kişiselleştirme kaynağının Değerlendirmeler sayfasını açın.
Değerlendirme Oluştur'u seçin.
Döngü değerlendirmesi için gerekli değerlendirme adı verilerini ve tarih aralığını girin. Tarih aralığı yalnızca değerlendirmeniz için odaklandığınız günleri içermelidir.
Bu çevrimdışı değerlendirmeyi çalıştırmanın amacı, bu döngüde kullanılan özellikler ve eylemler için daha iyi bir öğrenme ilkesi olup olmadığını belirlemektir. Bu daha iyi öğrenme ilkesini bulmak için İyileştirme Bulma'nın açık olduğundan emin olun.
Değerlendirmeye başlamak için Tamam'ı seçin.
Bu Değerlendirmeler sayfasında yeni değerlendirme ve geçerli durumu listelenir. Sahip olduğunuz veri miktarına bağlı olarak, bu değerlendirme biraz zaman alabilir. Sonuçları görmek için birkaç dakika sonra bu sayfaya geri dönebilirsiniz.
Değerlendirme tamamlandığında değerlendirmeyi seçin ve ardından Farklı öğrenme ilkelerinin karşılaştırması'nı seçin. Bu, kullanılabilir öğrenme ilkelerini ve verilerle nasıl davranacaklarını gösterir.
Tabloda en çok kullanılan öğrenme ilkesini seçin ve Uygula'yı seçin. Bu, modelinize ve yeniden eğitmelerinize en iyi öğrenme ilkesini uygular.
Güncelleştirme modeli sıklığını 5 dakika olarak değiştirin
- Azure portalında, hala Kişiselleştirme kaynağında Yapılandırma sayfasını seçin.
- Model güncelleştirme sıklığını ve ödül bekleme süresini 5 dakika olarak değiştirin ve Kaydet'i seçin.
Ödül bekleme süresi ve model güncelleştirme sıklığı hakkında daha fazla bilgi edinin.
#Verify new learning policy and times
get_service_settings()
Çıktının rewardWaitTime
ve modelExportFrequency
her ikisinin de 5 dakikaya ayarlandığını doğrulayın.
-----checking model
<Response [200]>
{'creationTime': '0001-01-01T00:00:00+00:00', 'lastModifiedTime': '0001-01-01T00:00:00+00:00'}
-----model updated: "0001-01-01T00:00:00+00:00"
-----checking service settings
<Response [200]>
{...learning policy...}
<Response [200]>
{'rewardWaitTime': '00:05:00', 'defaultReward': 0.0, 'rewardAggregation': 'earliest', 'explorationPercentage': 0.2, 'modelExportFrequency': '00:05:00', 'logRetentionDays': -1}
User count 4
Coffee count 4
Yeni öğrenme ilkesini doğrulama
Azure Notebooks dosyasına dönün ve yalnızca 2.000 yineleme için aynı döngüsü çalıştırarak devam edin. Hizmete yapılan toplam çağrıları görmek için Azure portalındaki ölçüm grafiğini düzenli aralıklarla yenileyin. Döngünün her yinelemesi için bir sıralama ve ödül çağrısı olan yaklaşık 4.000 çağrınız olduğunda yinelemeler yapılır.
# max iterations
num_requests = 2000
# check last mod date N% of time - currently 10%
lastModCheck2 = int(num_requests * .10)
jsonTemplate2 = rankactionsjsonobj
# main iterations
[count2, rewards2] = iterations(num_requests, lastModCheck2, jsonTemplate)
2.000 sıralama isteği için grafik çalıştırma
createChart
işlevini çalıştırın.
createChart(count2,rewards2)
İkinci grafiği gözden geçirme
İkinci grafik, Kullanıcı tercihleriyle uyumlu sıralama tahminlerinde görünür bir artış göstermelidir.
Kaynakları temizleme
Öğretici serisine devam etmek istemiyorsanız aşağıdaki kaynakları temizleyin:
- Azure Notebook projenizi silin.
- Kişiselleştirme kaynağınızı silin.
Sonraki adımlar
Bu örnekte kullanılan Jupyter not defteri ve veri dosyaları Kişiselleştirme için GitHub deposunda bulunur.