Aracılığıyla paylaş


Öğ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.

Dekont

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.

Ön koşullar

Dosya açıklamaları:

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 Değer
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

  1. Çekirdeği olarak Python 3.6değiştirin.
  2. 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>"

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.

  1. Azure portalında Kişiselleştirme kaynağınızı seçin.

  2. Kaynak gezintisinde İzleme'nin altındaki Ölçümler'i seçin.

  3. Grafikte Ölçüm ekle'yi seçin.

  4. 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.

  5. Zaman filtresini son 4 saat olarak değiştirin.

    Set up metric chart in Azure portal, adding metric for successful calls for the last 4 hours.

    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.jsoniç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:

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.

This chart shows the success of the current learning policy for the duration of the test.

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

  1. Azure portalında Kişiselleştirme kaynağının Değerlendirmeler sayfasını açın.

  2. Değerlendirme Oluştur'u seçin.

  3. 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. In the Azure portal, open the Personalizer resource's Evaluations page. Select Create Evaluation. Enter the evaluation name and date range.

    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.

  4. Değerlendirmeye başlamak için Tamam'ı seçin.

  5. 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.

  6. 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.

  7. 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

  1. Azure portalında, hala Kişiselleştirme kaynağında Yapılandırma sayfasını seçin.
  2. 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.

The second chart should show a visible increase in Rank predictions aligning with user preferences.

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.